ExcelWork.info

プロシージャを作成する( Sub, Function )

プロシージャを作成する

プロシージャとは、実行時に 1 つの単位として処理されるコードの集まりのことです。VBAの場合、主に Subプロシージャ(戻り値がない)Functionプロシージャ(戻り値がある)が使われます。



【構文:Sub プロシージャ】
 Sub ステートメント、End Sub ステートメントで囲む

[ access_level ] [ Static ] Sub name [ ( arglist ) ]

  [ statements ]

  [ Exit Sub ]

  [ statements ]

End Sub




【構文:Function プロシージャ】
 Function ステートメント、End Function ステートメントで囲む

[ access_level ] [ Static ] Function name [ ( arglist ) ] [ As type ]

  [ statements ]

  [ Exit Function ]

  [ statements ]

End Function


【項目の説明】

  • access_level  ・・・  プロシージャを利用できる範囲を指定します。PublicPrivateFriend の3種類があります。省略するとPublic を指定した場合と同じになります。
  • name  ・・・  定義する SubFunctionプロシージャの名前で、変数の標準的な名前付け規則に従って指定します。
  • arglist  ・・・  SubFunctionプロシージャを呼び出したときに引き渡す引数を(通常、以下の形で)指定します。
     varname As varname_type
    varname_type には、プロシージャに渡す引数(varname)のデータ型を指定します。
    「As varname_type」は省略可能で、省略するとバリアント型( Variant )を指定した場合と同じことになります。また、複数の引数を指定する場合はカンマ(,)で区切ります。
  • statements  ・・・  SubFunction) プロシージャ内で実行される一連のステートメントを指定します。(省略可)
  • type  ・・・  Function プロシージャからの戻り値のデータ型を指定します。省略するとバリアント型( Variant )を指定した場合と同じになります。

access_level(Public・Private・Friend) の詳細:
Public:すべてのモジュールのすべてのプロシージャから使用することができます。ただし、Option Private ステートメントが記述されているモジュールの中で使用した場合、プロジェクトの外からは使用できません。
Private:同一モジュール内からのみ使用可能です。
Friend:プロジェクト内からは呼び出せますが、オブジェクトのインスタンスのコントローラからは呼び出せません。キーワード Friend は、フォームモジュールおよびクラスモジュールでのみ記述可能です。

引数 arglist について以下を参照:
省略可能な引数について(Optional キーワード)
任意の数の引数を渡す(ParamArray キーワード)
参照渡しと値渡し(ByVal・ByRef)
配列の引数を渡す

Static
Sub プロシージャ内のローカル変数が、次に呼び出されるまでその値を保持します。ただし、Sub プロシージャの外部で宣言された変数は、Sub プロシージャの中で使われている場合でも、キーワード Static による影響を受けません。(省略可)

Function プロシージャの戻り値の設定:
Function プロシージャの名前 nameに、戻り値となる値( expressiontype 型> )を代入します。
 name = expression
 set name = expression (戻り値のデータ型がオブジェクト型の場合)
上記を Function ステートメントEnd Function ステートメント 内に記述します。

Exit Sub ステートメント
Sub プロシージャを直ちに終了します。Exit Sub ステートメントは、Sub プロシージャ内の任意の場所で必要に応じていくつでも指定できます。

Exit Function ステートメント
Function プロシージャを直ちに終了します。Exit Function ステートメントは、Function プロシージャ内の任意の場所で必要に応じていくつでも指定できます。


プロシージャーの使用例

サンプルVBAソース<その1>


実行結果<その1>


サンプルVBAソース<その2>


実行結果<その2>