0

基準1の保持範囲内のセルをチェックするvbaコードを作成しています。次に、他の基準を確認するために他の範囲をループする必要があります2,3,4 ...私の範囲は可変でなければなりません。列ごとに、常に行3と変数である「lr」の間でループします。これは、ループするためにインクリメントする必要がある変数であるため、列番号にも変数「col」があります。これを書いたのですが、うまくいきません。For Each ループでは、他の関数も呼び出します。これらの関数は、「CriteriaCol1」、「CriteriaCol2」などと呼ばれます。そのため、列番号と Sub im call の番号は同じです。サブタイトルの数字も変数にする方法はありますか?これは少し紛らわしいコードです:

Sub error_rept()

Dim lr As Long
Dim colrg As Range
Dim col As Integer
Dim Passed As Boolean

    lr = ActiveSheet.Range("A1").Offset(ActiveSheet.Rows.Count - 1, 0).End(xlUp).Row - 1
    col = 1

    Do While col < 8

        set colrg=sheets("NewDataSheet").range(col,3:col,lr)
            For Each cell In colrg
                '##if "run CriteriaCol1 and check if value of passed is true or false" then
                    Next
                Else
                    'do something
                End If
            Next

End Sub

Sub CriteriaCol()

Dim passes As Boolean

    If (cell.Value) = 6.01 Or (cell.Value) = 6.03 Or (cell.Value) = 6.04 Or (cell.Value) = 6.27 Then
        Passed = True
    Else
        Passed = False
    End If

End Sub

Sub CriteriaCol2()

Dim Passed As Boolean

    If (cell.Value) < 9999 And (cell.Value) > 1000 Then
        Passed = True
    Else
        Passed = False
    End If
End Sub

行セット colrg はエラーを返します: 構文エラー

助言がありますか?ありがとう

4

2 に答える 2

0

範囲を設定する 1 つの方法は、Cells() メソッドを使用することです。たとえば、範囲オブジェクトを「B2:C5」に設定するには、次のようにします。

set colrg = Sheets("Sheet1").Range(Cells(2,2),Cells(5,3))

(2,2)は2行2列に対応するのでB2、(5,3)は5行3列C5に対応する。

次に、バリアントまたはセル オブジェクトで For Each を使用して、この範囲をループできます。

于 2013-07-12T14:45:57.357 に答える