• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA基礎】ActiveSheetって?)

【VBA初心者必見】ActiveSheetとは?使い方や注意点を解説

このQ&Aのポイント
  • VBAの初心者がよく疑問に思う「ActiveSheet」について解説します。シートの「対象」という概念について理解することが重要です。
  • ActiveSheetは、現在アクティブなシートを表します。つまり、ユーザーが現在作業しているシートが対象となります。
  • また、シートが複数ある場合は、ThisWorkbookを選択しても作成したモジュールは最初のシートにしか適用されません。シートを指定する場合は、明示的にシートを指定する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

開いているExcelの今現在選択されている(表示されている。あるいはセルにポイントが当たっている)シートの事です。 Book全体を示すのはActiveBookです。普通はActiveBookの保持しているSheetsのオブジェクトからシート名あるいは番号でシートを指定してActiveにしてから他の処理を実施しないと、思わぬシートがActiveになっていて見当違いのシートに処理してしまいます。 つまりSheets("シート名")でちゃんと指定しましょう。

harukanasanon
質問者

お礼

ありがとうございました。 質問へのご回答ということで、ベストアンサーとさせていただきます。 補足で質問したことにつきましては別途検索し、ThisWorkBookに以下の記述をしてマクロを呼び出すことで解決しました。 Sub 全シート() For Each st In Worksheets st.Activate Call マクロ名 Next End Sub お二人とも、ありがとうございました!

harukanasanon
質問者

補足

早速のご回答ありがとうございます。 複数のシートに対して同じ命令を下したい場合は「Sheets("シート名")でちゃんと指定」しなければならない、ということですよね。。 シート名が複雑かつ大量であることが多いのですが、その場合なにか効率の良い方法はありませんでしょうか。

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>シート名が複雑かつ大量であることが多いのですが、その場合なにか効率の良い方法はありませんでしょうか。 すべてのシートに同じコードを実行するだけなら、たとえば以下のようにFor ...Nextで元のコードを挟んでシート数分だけ繰り返し操作をします。 Dim i As Integer  For i = 1 To Sheets.Count  元のコード  Next i

harukanasanon
質問者

お礼

ありがとうございました。 また、よろしくお願いいたします。

harukanasanon
質問者

補足

いつもありがとうございます。 元のコードとかちあってしまうのか、上記の記述で挟んでみても、やはり1シート分だけ元のコードの処理ができただけで終わってしまいました。 本当はここにコードを書いてご相談できれば良いのですが、元が書籍ものなので問題があるかなあと書けずにおります。

関連するQ&A

専門家に質問してみよう