
No.1ベストアンサー
- 回答日時:
(1)ActiveSheetは1つです。
VBAでは、複数あるものはコレクションオブジェクトといって、オブジェクトの集合体を表す1つのオブジェクトとして扱われます。WorkbooksとかWorksheetsとかがそうです。Worksheetsはそのブックのシート全体のコレクションで、単体のシートを指定するにはWorksheets("Sheet1")などと表記します。
ActiveSheetはコレクションオブジェクトでなく、単体のシートを指すので、常に1つだけです。
(2)デバッグ中にActiveSheetを確認したいときは、ステップ実行やブレークポイントで処理を中断させ、「デバッグ」>「ウォッチ式の追加」で「ActiveSheet.Name」を追加すれば、ウォッチウィンドウでシート名を確認することができます。
(3)ActiveSheetは1つなので、別のシートをアクティブにしたら、前のシートはアクティブではありません。
No.4
- 回答日時:
ThisWorkbookのSheetActivateイベント
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox Sh.Name
End Sub
これはブック単位でしか反応しないようだか。
選択はシートタブで2つ以上できて、だから2つあるように見えるが
や
「ウインドウー新しいウインドウうを開く」で色々やって見たが
、片方はウインドウ的なコピーで、見た目は2つ有るように見えるが
「アクチブシートは(その時点で)1つ」でよいのではないでしょうか。
Sub test01()
ActiveSheet.Cells(1, "A") = "AAA"
End Sub
新しいウインドウを開いていたときはコピーなので、両方にセットされるように見えるが、アクチブシートが2つではないでしょう。
普通に使っているときは、この考えで少なくても困りません。
シートを2つ以上指定したりしてやってみたが、シートタブでマウスでクリックしたシートですね。キーボ-ドやマウスで入力できるシート
ですね。キーやマウス以外で、VBAでやると
VBAでは
Sub test02()
Worksheets("Sheet1").Activate
Worksheets("Sheet3").Range("A3") = "DDDDDDDD"
End Sub
が可能(アクチブシート以外に値をセットできる)ですから、余りActivateに拘らなくても(むしろ拘らないで明示的に指定したほうが)良いのでは。
余りActivateに拘らなくても(むしろ拘らないで明示的に指定したほうが)良いのでは。
は特に参考になりました。
更に理解を深めることができました。ご回答どうもありがとうございました。
No.3
- 回答日時:
No.1です。
すみません、No.2さんの回答を読んで、ブックを2つ以上開いていた場合のことが抜けていたことに気がつきました。No.1の回答は、「開いているブックが1つのとき」に限定しての解説だとご理解ください。
No.2
- 回答日時:
(1)ActiveSheetプロパティはApplication/Workbook/Windowオブジェクトのメンバなので
Excelを複数起動している場合や複数ワークブックを開いている場合、ウィンドウを
複数開いている場合は、対象のオブジェクトによってActiveSheetの値は異なります。
なので(1)の答えとしては複数のAcvtiveSheetは存在しえます。
(2)可能です。Debug.print などでActiveSheet.nameなどを出すなど方法はあります。
(3)上記(1)で説明したように、上位オブジェクトによってActiveSheetの値は変わるので
条件によっては複数ActiveSheetが存在し得ますが、同一オブジェクト内では
ActiveSheetは1つなので、別のシートをアクティブにすれば前回のActiveSheetは
アクティブでなくなります。ただし、別のオブジェクトには影響しません。
簡単に説明するならば・・・エクスプローラーを2つ開くとします(窓A、窓B)。
エクスプローラー上で開いているフォルダをアクティブフォルダと考えれば
アクティブシートの関係と似たような関係になると思っておいてください。
アクティブフォルダは窓A、Bによってそれそれ存在する。・・・(1)
窓Aでフォルダを移動すれば前のアクティブフォルダはアクティブではなくなる。
しかし、窓Bのアクティブフォルダは変わらない・・・(3)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA ワークシート指定の1行目を選択をしたい 2 2022/08/20 18:10
- Excel(エクセル) Excelマクロ(VBA)CELL形式とA1形式の使い分け 6 2022/08/27 23:35
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- Excel(エクセル) エクセル 「実行時エラー"13":型が一致しません。」エラーについて 5 2022/05/04 10:46
- Visual Basic(VBA) エクセルvba シートを順次アクティブにするマクロ 3 2022/06/24 16:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Excel(エクセル) Excelから複数のWordファイルを操作する方法について教えて頂きたい。 やりたいことは、複数のW 2 2022/07/26 20:11
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
ハイパーリンクでジャンプした...
-
EXCELの図形(テキストボックス)...
-
【ExcelVBA】マクロの入ったシ...
-
特定のシートのみ再計算させな...
-
エクセル、特定のシートにパス...
-
エクセルのファイルサイズが急...
-
エクセルで複数のシートに画像...
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
Wordで差し込み印刷時に表示す...
-
エクセルで、シートの名前を変...
-
SUMIF関数【複数のシート...
-
エクセルのシー名を二段表示に...
-
エクセルで目次に自動でページ...
-
Accessのテーブルを既存のExcel...
-
特定のシート名のシートのみ除...
-
EXCELの「シートの見出し」のフ...
-
vba Listviewでのチェックボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルで複数のシートに画像...
-
確定申告用の医療費集計フォー...
-
エクセルのシー名を二段表示に...
-
EXCELの図形(テキストボックス)...
-
エクセル、特定のシートにパス...
-
Wordで差し込み印刷時に表示す...
-
ワークシートそのものの色を変...
-
Accessのテーブルを既存のExcel...
-
EXCELで存在しないシート...
-
エクセルの複数シートでのリン...
-
エクセルのファイルサイズが急...
-
エクセルの2つのシートを並び...
-
エクセルのシート連番の振り直し
-
エクセルで、シートの名前を変...
-
エクセルでリンク貼り付けした...
おすすめ情報