1つのExcelワークブックで、VBAサブルーチンを実行するためにさまざまなワークシートを選択します。選択したワークシートをループする方法を示すコードが見つかりました。 "MsgBox sh.Name
"を使用しています。ただし、コードを配置すると、最後に選択したシートにのみ影響します。選択したExcelワークシートをループする
たとえば、Sheet1、Sheet2、およびSheet3を(この順序で)選択すると、Sheet3のみが変更されます。以下は私のコードの簡単な例です。最後に選択したシートには、 "123
"がセルA1に割り当てられます。
Sub SimplifiedExample()
Dim sh As Worksheet
Dim selectedshs As Object
Set selectedshs = ActiveWindow.SelectedSheets
For Each sh In selectedshs
'MsgBox sh.Name
Range("A1") = 123
Next sh
End Sub
以下は、私がループしているコードです。テストに合格すると、データのリストに行が追加されます。このコードは、一度に1枚のシートに対して機能します。
Sub LoopingWorksheets()
Dim sh As Worksheet
Dim selectedshs As Object
Set selectedshs = ActiveWindow.SelectedSheets
For Each sh In selectedshs
Do While Application.WorksheetFunction.Max(Range("A:A")) < Range("Z2")
ActiveSheet.Range("A50000").Select
Selection.End(xlUp).Select
Selection.EntireRow.Insert
ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1:A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Loop
Next sh
End Sub
[Excel VBAでの選択の使用を避ける方法](https://stackoverflow.com/q/10714251/6535336)を参照してください。 – YowE3K
期間識別子で範囲を限定する必要があります。いいえ、どこで 'sh'をループで使用しますか? – Parfait