- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA基礎】ActiveSheetって?)
【VBA初心者必見】ActiveSheetとは?使い方や注意点を解説
このQ&Aのポイント
- VBAの初心者がよく疑問に思う「ActiveSheet」について解説します。シートの「対象」という概念について理解することが重要です。
- ActiveSheetは、現在アクティブなシートを表します。つまり、ユーザーが現在作業しているシートが対象となります。
- また、シートが複数ある場合は、ThisWorkbookを選択しても作成したモジュールは最初のシートにしか適用されません。シートを指定する場合は、明示的にシートを指定する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
開いているExcelの今現在選択されている(表示されている。あるいはセルにポイントが当たっている)シートの事です。 Book全体を示すのはActiveBookです。普通はActiveBookの保持しているSheetsのオブジェクトからシート名あるいは番号でシートを指定してActiveにしてから他の処理を実施しないと、思わぬシートがActiveになっていて見当違いのシートに処理してしまいます。 つまりSheets("シート名")でちゃんと指定しましょう。
その他の回答 (1)
- MackyNo1
- ベストアンサー率53% (1521/2850)
回答No.2
>シート名が複雑かつ大量であることが多いのですが、その場合なにか効率の良い方法はありませんでしょうか。 すべてのシートに同じコードを実行するだけなら、たとえば以下のようにFor ...Nextで元のコードを挟んでシート数分だけ繰り返し操作をします。 Dim i As Integer For i = 1 To Sheets.Count 元のコード Next i
質問者
お礼
ありがとうございました。 また、よろしくお願いいたします。
質問者
補足
いつもありがとうございます。 元のコードとかちあってしまうのか、上記の記述で挟んでみても、やはり1シート分だけ元のコードの処理ができただけで終わってしまいました。 本当はここにコードを書いてご相談できれば良いのですが、元が書籍ものなので問題があるかなあと書けずにおります。
お礼
ありがとうございました。 質問へのご回答ということで、ベストアンサーとさせていただきます。 補足で質問したことにつきましては別途検索し、ThisWorkBookに以下の記述をしてマクロを呼び出すことで解決しました。 Sub 全シート() For Each st In Worksheets st.Activate Call マクロ名 Next End Sub お二人とも、ありがとうございました!
補足
早速のご回答ありがとうございます。 複数のシートに対して同じ命令を下したい場合は「Sheets("シート名")でちゃんと指定」しなければならない、ということですよね。。 シート名が複雑かつ大量であることが多いのですが、その場合なにか効率の良い方法はありませんでしょうか。