dポイントプレゼントキャンペーン実施中!

VBAの「This Workbook」にコードを書くことについて教えて下さい。
ここにコードを書きと、例えばどんな便利な機能があるのでしょうか?
よろしくお願いします。

私は下記の意味はだいだいわかります。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_Open()

A 回答 (2件)

VBEのVBAProjectにSheet1などシートモジュールがあります。

そのWorkBook版だと思えばよいと思います。
(1)Workbookのイベントのプロシージュアー
(2)各個々のSheetに関連して、その上(どのシートにおいてもそのイベントが起これば)のレベルでシートのイベントを捉える
(3)Window画面関連
(4)その他
などをここに書く。
(1)はOpen、Close、Activate、それらのBefoe版
(2)はSheettXXXの形のもの、Newsheet
(3)はWindowActivateなど
(4)その他PivotTableやAddinとの絡み
ーー
>便利な機能があるのでしょうか
便利というか、ユーザーが利用したいとき、あれば使えて貴重、無ければどうするかというものだと思います。
これ以外のほしいものは無いのか、とは思います。
(1)以外は、高等な使い方をする方向きの選択肢という気がします。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
よくわかりました。

お礼日時:2007/07/23 04:42

例えば各シートには Activate イベントがあります。


TshisWorkbook にも SheetActivate イベントがあります。
これらの違いをよ~く見てください。
Sheet1 の Activate イベントは
Private Sub Worksheet_Activate()
となっており、
ThisWorkbook の方は
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
となっています。違いが分かりましたか?
ThisWorkbook の Activate イベントには引数がありますね。

この引数は何だと予想しますか?
アクティブになったシートを表す Worksheet オブジェクトです。
シートがアクティブになったときに何らかの処理をしたい場合、それが Sheet1 の場合だけなら Sheet1 の Activate イベントに記述すれば済みますが、いくつかのシートである程度共通した処理をしたい場合は ThisWorkbook の SheetActivate イベントを利用します。
下記コードはアクティブになったシートのセル A1 に、現在の日時を書き込み、さらにはシートの名前によって処理を分けています。(具体的な処理は書いてませんが)

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Sh.Cells(1, 1).Value = Now()

  Select Case Sh.Name
    Case "Sheet1"
      ' 処理1
    Case "Sheet2"
      ' 処理2
    Case "Sheet3"
      ' 処理3
  End Select
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
たいへん、勉強になりました。

お礼日時:2007/07/23 04:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!