簡體   English   中英

Excel VBA For Loop Error

[英]Excel VBA For Loop Error

我正在嘗試運行一個簡單的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

我不知道今天早上是否需要更多咖啡,但我似乎無法弄清楚到底是怎么回事。 任何幫助將不勝感激。

遞增的變量(在Next )應該是索引變量,即:

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

i是如此受歡迎的索引,你應該在其他情況下使用它之前三思而后行。

你已經從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

你可以使用Autofilter更快地使它更快,這樣你就可以遍歷只有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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM