VBA:多次迭代后下标超出范围

时间:2017-03-17 12:55:57

标签: excel vba excel-vba

我正在使用excel 2010.我正在尝试找到第一个带有空“A1”单元格的工作表。这个工作簿非常大,一切都没有错误,直到迭代203,我得到“错误9:下标超出范围”。我不明白为什么会这样。我的代码应该在工作表220上找到第一个空的“A1”单元,因此我在工作表203上得到错误是奇怪的。工作表203中的单元格“A1”与其前面的工作表的“A1”单元格不同。我的部分代码附在下面。

Public Sub CommandButton1_Click()

Dim firstCell As String  
    Dim i As Integer  
    i = 1
    firstCell = ThisWorkbook.Sheets(i).Cells(1, 1)  
    Do Until firstCell = "" Or i = 300  
        i = i + 1  
        firstCell = ThisWorkbook.Sheets(i).Cells(1, 1)  
    Loop
end sub

2 个答案:

答案 0 :(得分:0)

Sub forEachWSinWB() Dim ws As Worksheet Dim wb As Workbook Dim wsCounter As Long

For Each ws In ThisWorkbook.Worksheets  'amend as appropriate
    wsCounter = wsCounter + 1
    If wsCounter > 6 Then
        Debug.Print ws.Name ' do what you need to here
    End If

Next ws

End Sub

或转到https://support.microsoft.com/en-us/help/142126/macro-to-loop-through-all-worksheets-in-a-workbook

答案 1 :(得分:0)

不是使用工作表编号迭代工作表,而是使用Worksheet对象让VBA为您完成所有艰苦工作

Public Sub CommandButton1_Click()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        If ws.Index > 5 and ws.Range("A1").Value = vbNullString Then
            'do something
            Exit For
        End If
    Next ws
End Sub