0

これは簡単な修正であるはずですが、私は VBA の世界とプログラミング全般に不慣れです。これは、調査からのエントリ値を保持する特定の列を検証するために必要なコードです。調査の質問のいくつかの値の可能性は同じです。すべての質問に同じコードをコピーして貼り付けてから、列の文字と数字を変更したくありません。これを行う簡単な方法があると確信しています。

具体的には、列 I から列 AC までを、以下に示すケースに対して検証する必要があります。このコードをできるだけシンプルに保ちたいと思います。本当にありがとう。

私は現在使用している方法が気に入っていますが、これをゼロから再構築する必要がある場合は、そうする必要があります。

Sub MyCheck()

Application.ScreenUpdating = False

Dim i As Integer
    For i = 2 To Range("I65536").End(xlUp).Row
        Select Case Cells(i, 9).Value
            Case "1", "2", "3", "4", "5", "88", "99"
                Cells(i, 9).Interior.ColorIndex = xlNone
            Case Else
               Cells(i, 9).Interior.ColorIndex = 6
        End Select
    Next i
    Application.ScreenUpdating = True

End Sub
4

1 に答える 1

0

このような?

Option Explicit

Sub MyCheck()
    Application.ScreenUpdating = False

    Dim i As Long, lRow As Long
    Dim ws As Worksheet
    Dim rng As Range, aCell As Range
    Dim ColLetter As String

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        '~~> From Col B to Col AC
        For i = 2 To 29
            ColLetter = Split(.Cells(, i).Address, "$")(1)

            '~~> Find the last row of the releavnt column
            lRow = .Range(ColLetter & .Rows.Count).End(xlUp).Row

            '~~> Set your range
            Set rng = .Range(ColLetter & "2:" & ColLetter & lRow)

            '~~> Remove all the color. Note we are not doing this
            '~~> in the loop
            rng.Interior.ColorIndex = xlNone

            For Each aCell In rng
                Select Case aCell.Value
                Case 1 To 5, 88, 89
                Case Else
                    aCell.Interior.ColorIndex = 6
                End Select
            Next
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

スクリーンショット

ここに画像の説明を入力

于 2013-04-16T16:58:36.553 に答える