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

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

【VBA基礎】ActiveSheetって?

大変初歩的な質問で申し訳ありません。 コード自体を自分で記述するのではなく、 使えそうなコードをネット上で拾ってきて VBAの標準モジュールに書き込み、 使用している初心者です。 ActiveSheetのActiveって、どの状態を 指すのでしょうか。 ものによってはブック全体にかかるコードもあれば、 1シート目にしかかからないコードもありました。 「対象となっているシート」という概念だということは わかるのですが、いったいどこで「対象」を判断 しているのかがわかりません。 例えば複数のシートのあるブックで、 ThisBookを選択して標準モジュールを作成しても 作成時の1シート目にしか適用されなかったり。。。 シートが沢山あるブックを扱うことが多いので、 ここらの概念がすっきりすると、うれしいのですが、 初心者にもわかりやすいサイトのご紹介や、 ご説明をいただけないでしょうか。 どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • 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

  • Excel2007VBA ブックのアクティブ化

    ●質問の主旨(2点) 1.以下のコードは、なぜエラーが返されるのでしょうか? 2.タスクバーにあるアクティブ状態ではないブックの1枚目シートを 選択するためには、以下のコードをどのように書き換えれば良いでしょうか? ●質問の補足 タスクバーにはエクセルブック「Book1」と「Book2」を表示させ、 「Book1」の「sheet1」がアクティブになっています。 Book1の標準モジュールに以下のコードを記述しています。 Sub sample1() Workbooks("Book2.xlsx").Activate Worksheets("sheet1").Select End Sub しかし実行すると「実行時エラー9インデックスが有効範囲にありません」と エラーが返されます。なぜそうなるのかが分かりません。 ご存知の方がいらっしゃればご教示よろしくお願い申し上げます。 私はVBA初心者です。

  • エクセルVBA  activesheetの非表示

    エクセル2002使用です。 sheet1のモジュールにsheet2のセルから値を取得するコードを書きました。 セルの値を取得後、sheet1の画面に戻します。 値を取得するために一度sheet2をactivesheetにする必要があると思うのですが、 その際にマクロを実行するとエクセルの画面が一瞬sheet1からsheet2に変わってしまいます。 この、一瞬のsheet2の画面を出さない方法はあるのでしょうか? sub aaa() Dim tukikekka as range Worksheets("sheet2").Activate Set tukikekka = ActiveSheet.Range("A2:A15") _ .Find(what:=ActiveSheet.Range("A1"), lookat:=xlWhole) Worksheets("sheet1").Activate ActiveSheet.Range("H7").Value = tukikekka.Offset(,7) end sub (実際のコードはもう少し長いので、Sheet2がはっきりと見えます) よろしくお願いします。

  • Excelで『Microsoft Excel Objects』でのVBA

    こんにちわ。 早速ですが、Sheet1だけ他のBookでも使用する事があり、 Sheet1を移動した時に、VBAコードも一緒に移動させたいので、 『標準モジュール』ではなく、『Microsoft Excel Objects』の 「Sheet1(Sheet1)」部分にVBAコードを記入したいのですが、 他シートをデータを取得したりする処理が出来ません。 制約等あるのでしょうか? また、Sheet1を移動した時に、モジュールも一緒に移動させる事は 可能でしょうか? 宜しくお願いします。

  • AccessDB VBA

    お世話になります ■Excel C5以下行から社員コードを入力するとK5以下行に社員名がジャンプしてくる(Accessから)VBAを作成させたい ワークシートは増減あります、名前もランダムです book内のワークシートすべてに適用させたい おそらくADO接続?? 初心者なのでコード等よろしくお願いします

  • Access VBA標準モジュールについてです。

    Access VBA標準モジュールについてです。 現在、仕事上必要にかられAccessVBAを勉強中の初心者です。初歩的な質問で申し訳ありませんが、ご存知の方教えて下さい。 フォーム上のコマンドボタンを押した時に標準モジュールを作動させたいのですが、そんな方法はありますか?【クラスモジュールについての本は沢山あって何とか理解できつつありますが、標準モジュールに関しての記述があまり無い気がします。】 宜しくお願いします。

  • Excel VBAでのコードの書き分け方

    Excel VBAについてご質問します。 プロジェクトの項目を見ると、 Sheet1 ThisWorkbook 標準モジュール などさまざまあると思います。 これらに対して、どこにコードを書いていくべきなのかがわかりません。 例えば、Sheet1にボタンを配置して、それがクリックされたときの動作についてはSheet1に書けばいいのだと思います。 ですが、いろんなシートのコード、フォームのコードなどから呼び出される関数はThisWorkbookか標準モジュールのどちらに書けばいいのか悩んでいます。 それ以外のケースも含めて、一般的にこういう風に使い分けをするというのがありましたら、ぜひ教えてください。 よろしくお願いいたします。

  • エクセル VBA シート見出し色の参照について

    エクセルVBAでブック内のシート見出し色が赤のものだけ全てを 印刷し、なければ、”印刷対象はありません”とメッセージを1回だけ出すマクロを作成したいのですが、どのようなモジュールを作成すればいいかわかりません。 教えていただけますでしょうか。

  • VBAのコード

    VBA初心者です。 "元データ"シートのA1をコピーし、cドライブにある、"保存用"というフォルダの、"一覧"というBOOKの"保存先"というシートのA1に貼り付ける時のコードがわかりません。 貼り付け先のシートを指定する記述がどうしてもわからないので助けてください。 よろしくお願いします。

  • VBA ユーザーフォームのイベントプロシージャ

    いつもお世話になっております。 VBAを勉強中の初心者です。 最近ユーザーフォームの作成について学習しております。 ユーザーフォームモジュールにコードを記述しているのですが、何かの拍子?ブックをオープンした場合などに、自動でプロシージャが作成されてしまい困っています。 (1)どのタイミングでプロシージャが作成されるのでしょうか? (2)何故自動で作成されるのでしょうか? (3)自動でプロシージャが作成されないようにすることはできるのでしょうか? 以上についてご教授ください。 よろしくお願いします。

  • VBAで他のBOOKのマクロの実行

    VBAの初心者です。 ExcelのVBAで他のBOOKに記載された標準モジュールのプロシージャを実行するにはどのようにコーディングすればよいのでしょうか?

専門家に質問してみよう