2017-03-17 30 views
1

我正在使用excel 2010.我嘗試使用空的「A1」單元格查找第一個工作表。這個工作簿是非常大的,一切工作沒有錯誤,直到迭代203,我得到「錯誤9:下標超出範圍」。我不明白爲什麼會發生這種情況。我的代碼應該在工作表220上找到第一個空的「A1」單元,所以我在工作表203上發現錯誤很奇怪。工作表203中的單元「A1」與它前面的工作表中的「A1」單元沒有區別。我的代碼的一部分附在下面。VBA:在多次迭代後下標超出範圍

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 

回答

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 
+0

與上面相同的問題,如果我想忽略前5個工作表,該怎麼辦?用我的代碼(這不起作用),我可以設置i = 6。我可以用這個代碼來做到嗎? – Alex

+0

是的,不是問題。我編輯了包含工作表索引的檢查 – CallumDA

+0

非常感謝。 – Alex

0

子forEachWSinWB() 昏暗的WS作爲工作表 昏暗WB作爲工作簿 昏暗wsCounter只要

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

+0

如果我想忽略前5個工作表,該怎麼辦?用我的代碼(這不起作用),我可以設置i = 6。我可以用這個代碼來做到嗎? – Alex

+0

現在就試試..我編輯了答案 –