Do Untilステートメントは完全に機能します。しかし、私は最初のワークシートを通過することはできません。助けをありがとうございました。VBAネストされたDo Until Loop For Each Loop
Option Explicit
Sub InsertBlankRow()
Dim rowCount As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
rowCount = 2
With ws
Do Until IsEmpty(Cells(rowCount + 1, "D"))
If (Cells(rowCount, "D") <> Cells(rowCount + 1, "D")) Then
Range(Cells(rowCount + 1, "D"), Cells(rowCount + 2, "D")).EntireRow.Insert Shift:=xlDown
rowCount = rowCount + 3
Else
rowCount = rowCount + 1
End If
Loop
End With
Next ws
End Sub
ありがとうございました。 ws.Cellsとws.Rowsを使用すると、Do Untilステートメントが機能しなくなりました。一度私はwsを削除しました。行を追加することができました。それでも、すべてのワークシートをループしません。
私が現在取り組んでいることを提供するコードを編集しました。
それぞれの 'Cells'リファレンスを' ws'で修飾します。だから 'IsEmpty(ws.Cells(行数+ 1、" D "))など。そうでなければ、コードはマクロが実行されたときにのみActiveSheetを参照します。また、[回避選択](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)を参照してください。 –
また、 'Rows..'は' wsです。行(rowCount + 1).Select' –