Microsoft Access Club >VBA物語 >このページ >次頁 < 前項  サイト内検索


イベントプロシージャの種類:VBA物語24



基礎的なお話をずら〜っとしてまいりました。が、いま少し、お付き合いください。今日は、イベントプロシージャの種類についてお話したいと思います。

イベントプロシージャを大別すると、

  1. Subプロシージャ
  2. Functionプロシージャ
  3. Propertyプロシージャ

があります。

クラスモジュール

今までお話してきたのは、Subプロシージャを中心にしてきましたね。フォームやコマンドボタンからイベントを実行させているのは全て、クラスモジュール(フォーム、レポートに付随するイベントプロシージャ)であるSubプロシージャでした。

プライベートプロシージャは、下記のように先頭に Private が付きます。

このプロシージャは、フォームとレポート内で各イベントに応じて実行させるものです。これらの外側では動作しません。

Public Subプロシージャ

次に、Privateではなく、Publicを用いるSubプロシージャもあります。このプロシージャはデータベースウィンドウの「モジュール」欄に記載します。そして、データベース内全ての場所から参照することが可能です。
※先頭のPublicを省略することができます。一般的には省略型で記載しているのが多いですね。

しかし、このPublic Subプロシージャは次に紹介するFunctionプロシージャと違って「値を返すことができません。計算はせずに指示だけを行う場合に使います。

サンプルプロシージャ
Sub GetInfo()

    Dim stranswer As String
    stranswer = InputBox(Prompt:="名前を入力してください。")

End Sub
コンパイルエラー

このSubプロシージャをイミディエイト画面上で実行します。すると、下記のようなエラーが発生します。イミディエイト画面で GetInfo() と記述しEnterキーをクリックします。

このメッセージの意味は、「値を求めるならFunctionプロシージャで記述する必要があります。」ということです。では、どのように使うかといいますと、Subプロシージャはサブルーチン的な位置づけで使用します。

サブルーチン

下記のようにFunctionプロシージャ内にCall関数でSubプロシージャを呼び出せば問題ありません。 このような使い方をサブルーチン関数、またはSubプロシージャをサブルーチンとして用いる、等呼びます。

Function GetInfo_2()

    Call GetInfo 'Call関数で呼び出します。

End Function
実行結果
  1. FunctionプロシージャGetInfo_2を実行します。
  2. 以下のようなInputBoxが立ち上がります。

独自関数

Functionプロシージャは、独自関数を作成する場合に利用します。独自関数と呼ぶプロシージャの場合は、Functionプロシージャを指します。

  • 値を返すのがFunctionプロシージャ。

  • 値を返さないのがSubプロシージャ。

Propertyプロシージャは、このVBA物語の範囲を超えますので割愛します。

2003/03/01

ページの先頭へ 前ページへ戻る


イベントプロシージャの種類:VBA物語24


 

-Microsoft Access Club-