各ワークシートでアドインを実行するマクロを作成しました。アドインは Sage 固有のアドインです。sendkeys は、どのような sendkeys を入力しても動作するはずですが、すべてのシートでテスト「テキストの追加」を実行し、元のアクティブ シートに戻ってから、シートの数だけアドインを実行します (すべてアクティブ シートで)。非表示のワークシートをスキップするように何かを追加する必要があります...? 助けてください。
Sub CountSheets()
Dim ws As Worksheet
Dim starting_ws As Worksheet
Set starting_ws = ActiveSheet 'remember which worksheet is active in the beginning
For Each ws In ThisWorkbook.Worksheets
ws.Activate
Application.SendKeys "%XRV%O", True
Application.Wait (Now + #12:00:01 AM#)
ws.Cells(1, 1) = "Created by Yo Castle 7 "
Application.Wait (Now + #12:00:01 AM#)
Next
starting_ws.Activate 'activate the worksheet that was originally active
End Sub
答え1
表示されているシートのみにマクロを実行するには、IF
ループを開始した直後に、Visible
プロパティが true の場合、それ以外の場合は次のプロパティに進みます。
したがって、コードは次のようになります。
Sub CountSheets()
Dim ws As Worksheet
Dim starting_ws As Worksheet
Set starting_ws = ActiveSheet 'remember which worksheet is active in the beginning
For Each ws In ThisWorkbook.Worksheets
If ws.Visible = true Then
ws.Activate
Application.SendKeys "%XRV%O", True
Application.Wait (Now + #12:00:01 AM#)
ws.Cells(1, 1) = "Created by Yo Castle 7 "
Application.Wait (Now + #12:00:01 AM#)
End If
Next
starting_ws.Activate 'activate the worksheet that was originally active
End Sub