• ベストアンサー

excelの学校

ActiveWorkbook.ActiveSheet.Range(″◯◯″) ThisWorkbook.ActiveSheet.Range(″◯◯″) 前者は、新しく開いたブックのセルの記述で、後者は、元々開いていた(プログラムの書いてある)ブックのセルの記述です。これらは、どういう所で使えるexcelVBAのプログラムなのでしょうか?教えて頂けると幸いです。

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

  • ベストアンサー
回答No.3

追記。 以下のように、複数のブックを開いている場合、どのブックが操作されるのか、注意が必要です。 Workbooks.Open "C:¥excelsample¥2023年実績.xlsx" Workbooks.Open "C:¥excelsample¥2024年実績.xlsx" Workbooks("2023年実績.xlsx").Activate ActiveWorkbook.ActiveSheet.Range(″◯◯″) ↑これは「2023年実績.xlsx」のブックを操作する Workbooks("2024年実績.xlsx").Activate ActiveWorkbook.ActiveSheet.Range(″◯◯″) ↑これは「2024年実績.xlsx」のブックを操作する ThisWorkbook.Activate ActiveWorkbook.ActiveSheet.Range(″◯◯″) ↑これは「現在実行しているマクロが入ったブック(ブック名は不明)」のブックを操作する(ThisWorkbookとActiveWorkbookが同じブックを指しているので、こうなる) このように「どのブックがアクティブなのか?」で、ActiveWorkbookは「指しているブックが変化する」ので、注意が必要です。 注意しないと、2024年実績.xlsxを操作しているつもりで、2023年実績.xlsxを操作していた、なんてことが起きます。

その他の回答 (2)

回答No.2

>これらは、どういう所で使えるexcelVBAのプログラムなのでしょうか? ActiveWorkbookは「現在、セルにフォーカスが当たっているブック」を意味します。つまり「キーボードで入力したら、セルに打った文字が入力されるブック」の事です。 ThisWorkbookは「現在実行しているマクロが保存されているブック」を意味します。 a.xlsmと、b.xlsmの2つのブックを開いていて、現在実行しているマクロがa.xlsmの中にあって、キー入力するとb.xlsmに文字が入力される状況の時、以下のようになります。 ActiveWorkbook⇒b.xlsm ThisWorkbook⇒a.xlsm ThisWorkbookは、常に「実行しているマクロが保存されているブック」になり変化しません。 しかし、ActiveWorkbookは「今、入力フォーカスがあるブック」なので、フォーカスが何処のブックにあるか変化すると、指し示すブックも変化するので「現在、どのブックにフォーカスがあるのか?」を把握した上で用いないと、操作するブックを間違える事があります。

  • mnymnymny
  • ベストアンサー率24% (36/147)
回答No.1

VBAで新たにエクセルを新規作成する際にThisWorkbookでコードを書き、ActiveWorkbookでデータを入れます。それだけの違いです。

zasx1097
質問者

補足

ThisWorkbookでコードを書き、ActiveWorkbookでデータを入れます。 ここの意味が分かりません。教えて頂けると幸いです。

関連するQ&A