2017-03-17 8 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

のではなく、ワークシートにワークシートを反復に行くとしてブック 薄暗いwsCounterとしてワークシート 薄暗いWBとして 薄暗いWS番号は、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()ロング

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

今すぐお試しください。私は答えを編集しました –

関連する問題