4.マクロを書く場所
 次は、基本的な使い方です。全て説明していると時間がいくらあっても足りないので、当サイトで使う部分に絞って説明します。

 VisualBasicエディターを見てみましょう。これが、ちまたで噂のエクセルマクロを書く画面です。今までに、この画面を出したことがなかった人は、左側にプロジェクトエクスプローラと、その下にプロパティウィンドウが表示されていると思います。この2つ、最低限表示しておいて損は無い物なので表示しておきましょう。いらないという方は、消してもかまいませんが(汗)

 もし、この2つが表示されていない方は、ここを参考にして表示してみてください。
マクロを作る場所@/ワークシートが持つマクロ
 VisualBasicエディターを出しただけでは、マクロをどこに書いたらいいのか分かりませんね。とりあえず、プロジェクトエクスプローラの左図のあたりをダブルクリックしてみてください。VisualBasicエディターにこんなウィンドウが現れます。ここが何を隠そうマクロを書くところです。

 なお、この手順で開いたウィンドウ書いたマクロは「ワークシートが持つマクロ」になります。基本的には、ワークシート固有のプロシジャを書いておくのが一般的です。

 ちなみに、シートを削除すると削除したシート内に書いてあるマクロも一緒に消えてしまいます。なんともったいない・・・(汗)

 呼び出し方法は以下を参考にしてください。

    '【例】Sheet1内にある prcHappy というプロシジャを呼び出す

    'プロシジャ名のみ指定する場合
    '同じワークシート内であれば、これでOK
    Call prcHappy

    'シート名も指定する場合
    'モジュールや他のワークシートから呼び出すときは、こうすればOK
    Call Sheet1.prcHappy

    'ちなみに、Callは無くてもOK
    Sheet1.prcHappy

    '【例】Sheet1内にある fncIsland という関数を呼び出す

    '関数名のみ指定する場合
    '同じワークシート内であれば、これでOK
    strName = Island()

    'シート名も指定する場合
    'モジュールや他のワークシートから呼び出すときは、こうすればOK
    strName = Sheet1.Island()
マクロを書く場所A/標準モジュール
 マクロが書けるところはまだあります。とりあえずこの図を参考にして標準モジュールというものを追加してください。

 追加すると、Visual Basicエディターの右側に、同じようなものが出てきましたね。同じような画面ですが、タイトルバーの部分をよく見てください。何かが違います…えっ?自分のパソコンの画面と図の色が違うだけだって??そんなことはないはず…(汗)

 この手順(モジュールの追加)で開いたウィンドウにマクロを書いたときは、「ワークブック全体で共有するマクロ」になります。エクセルワークブック内の、どのマクロからでもプロシジャ名だけで呼び出すことができます。シートを削除しても消えることはありません。

 なお、呼び出し方法は以下を参考にしてください。

    '【例】CommonModule内にある prcHappy というプロシジャを呼び出す

    'プロシジャ名のみ指定する場合
    '同じモジュール内であれば、これでOK
    Call prcHappy

    'モジュール名も指定する場合
    '複数のモジュールで同じ名前のプロシジャがあるときは、こうすればOK
    Call CommonModule.prcHappy

    'ちなみに、Callは無くてもOK
    CommonModule.prcHappy

    '【例】CommonModule内にある fncIsland という関数を呼び出す

    '関数名のみ指定する場合
    '同じモジュール内であれば、これでOK
    strName = Island()

    'モジュール名も指定する場合
    '複数のモジュールで同じ名前の関数があるときは、こうすればOK
    strName = CommonModule.Island()
マクロを書く場所B/ワークブックが持つマクロ
 3つ目のマクロを書く場所は、ThisWorkbookの中です。右図の矢印の当たりをダブルクリックして開いたウィンドウに書いたのがそれです。

 ここへ書いたマクロは、ワークブックが持つマクロになります。基本的には、ワークブック全体に関わる処理(ワークブックを開くときや閉じるとき、ワークシートが追加されたときや削除されたときなど)を記述します。

 なお、呼び出し方法は以下を参考にしてください。

    '【例】ThisWorkbookにある prcHappy というプロシジャを呼び出す

    'プロシジャ名のみ指定する場合
    'ThisWorkbook内であれば、これでOK
    Call prcHappy

    'ThisWorkbookも指定する場合
    'モジュールやワークシートから呼び出すときは、こうすればOK
    Call ThisWorkbook.prcHappy

    'ちなみに、Callは無くてもOK
    ThisWorkbook.prcHappy

    '【例】ThisWorkbook内にある fncIsland という関数を呼び出す

    '関数名のみ指定する場合
    'ThisWorkbook内であれば、これでOK
    strName = Island()

    'ThisWorkbookも指定する場合
    'モジュールやワークシートから呼び出すときは、こうすればOK
    strName = ThisWorkbook.Island()
Copyright(C) 1999-2006 結城圭介。 All rights reserved