ブックレベルで利用できるイベント

ブックのイベントThisWorkbookモジュールに記述
ブックのイベント

リンクユニット


イベントマクロ 12回

ブックのイベント

ブックレベルで利用できるイベントは、ThisWorkbookモジュールに記述します。
ブックのイベントも多数ありますが、同じ内容のイベントプロシージャがシートとブックの両方のモジュールに記述されている場合、まずシートのプロシージャ、次にブックのプロシージャが実行されます。
ブックのイベントの中にある、先頭にSheetとあるイベントは、シートレベルで発生するイベントをブックレベルで受け取るための物です。
SheetActivate
SheetBeforeDoubleClick
SheetBeforeRightClick
SheetCalculate
SheetChange

(サンプルファイルは、こちらから イベントマクロ12回サンプルデータ

ブックのイベント一覧

1. ブックのイベント一覧


ブックのイベント-1

規定のイベント Workbook_Open

2.Workbookオブジェクトの既定のイベントは、ブックを開いたときに発生するOpenイベントで す。このイベントのプロシージャでSubステートメン卜は次のような記述です。

Private Sub Workbook_Open()
  '間に処理を記述、引数はありません。
End Sub
ブックのイベント-2

3. Workbook_Openを使って、一番助かることを考えてみましょう。たとえば、一緒に使うワークブックやを開くであるとか、前回のデータをクリアするとか、特定のシートを選択するなどが考えられます。下記のコードでは、同じフォルダ内にあるtest_01.xlsxというブックを開きます。

Private Sub Workbook_Open()
    Workbooks.Open ThisWorkbook.Path & "\test_01.xlsx"
End Sub

下は、ブックを開いたときに、Sheet2をアクティブにするイベントマクロです。
ブックのイベント-3

ブックを開くと運勢が表示される占いマクロ

4. ここではRandomizeステートメントを使っています。
構文は、Randomize [number] 
引数numberは省略できます。 Randomize ステートメントは乱数系列を再設定するために、乱数ジェネレーターを初期化します。

Private Sub Workbook_Open()
    Dim unsei() As Variant
    unsei = Array("大吉", "中吉", "小吉", " 吉 ", "末吉", " 凶 ", "大凶")
    Randomize
    MsgBox "今日のあなたの運勢は" & unsei(Int(Rnd * 7)) & "です"
End Sub

実行したところです。
【コードの説明】 この占いマクロでは、運勢を7つ設定していて、それをunseiという配列変数に登録しています。
そのなかから1つを選ぶのには、乱数をつかいます。
Rnd関数で乱数を作り、それを7倍にしています。
さらにInt関数で少数点を切り捨てます。これにより、0から6までの整数が作成されます。
Randomizeステートメントを使っているのは、乱数の値が毎回同じになることを避けるために、基準値を変更するためです。

ブックのイベント-4