2

後でより多くの機能を含めるために拡張される単純な For ループを実行しようとしていますが、「次の制御変数の参照が無効です」というエラーがスローされ続けるため、問題が発生しています。私が使用しようとしているコードを以下に示します。

Sub Tickbox()

Set Location = Sheets("TickBoxSheet").Range("B:B")

i = WorksheetFunction.CountA(Location)

Sheets("TickBoxSheet").Range("B2").Select


For a = 1 To i
    If Selection.Value = "True" Then
        Row = Selection.Row
        'Hide some rows in another sheet via if statements

        ActiveCell.Offset(1, 0).Select
    End If
Next i

End Sub

今朝もっとコーヒーが必要かどうかはわかりませんが、何が起こっているのかわかりません. どんな助けでも大歓迎です。

4

2 に答える 2

8

インクリメントされた変数 ( 内Next) は、インデックス変数である必要があります。つまり、次のようになります。

For a = 1 To i
  '...
Next a

iインデックスとして非常に人気があるため、他のコンテキストで使用する前によく考えてください。

于 2012-07-04T08:35:27.870 に答える
5

llmo からすでに回答を得ています。しかし、私が強調したいことが他にもいくつかあります...

試して避けてください.Select。コードが遅くなります。

また、データを持つすべての行をループすることを考慮して、最後の行を提供する必要はありませんWorksheetFunction.CountA(Location)私はこれを提案します

Sub Tickbox()
    Dim i As Long, a As Long, Rw As Long

    With Sheets("TickBoxSheet")
        i = .Range("B" & .Rows.Count).End(xlUp).row

        For a = 2 To i
            If .Range("B" & a).Value = "True" Then
                Rw = a
                'Hide some rows in another sheet via if statements
            End If
        Next a
    End With
End Sub

オートフィルターを使用して高速化することもできるので、Trueたとえば次のセルのみをループします。

Sub Tickbox()
    Dim i As Long, a As Long, Rw As Long
    Dim Location As Range, acell As Range

    With Sheets("TickBoxSheet")
        '~~> Remove any filters
        .AutoFilterMode = False

        i = .Range("B" & .Rows.Count).End(xlUp).row

        With .Range("B1:B" & i)
            .AutoFilter Field:=1, Criteria1:="True"
            Set Location = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
            Debug.Print Location.Address
        End With

        '~~> Remove any filters
        .AutoFilterMode = False

        For Each acell In Location
            If acell.Value = "TRUE" Then
                Rw = acell.row
                'Hide some rows in another sheet via if statements
            End If
        Next acell
    End With
End Sub
于 2012-07-04T08:52:58.727 に答える