ExcelWork.info

Excel(エクセル)のマクロ・VBA・関数・操作などのメモ

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

      2015/04/30

プロシージャを作成する

プロシージャとは、実行時に 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>

プロシージャ作成 例2




 - 構文 , , , ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

If文使用例その1
条件分岐 If文(If…Then…Else ステートメント)

If…Then…Else ステートメントの使い方 【構文 …

While_Wend ステートメント例
繰り返し処理(While…Wend ステートメント)

While…Wend ステートメントの使い方 【構文】 While …

変数やプロシージャのスコープ(適用範囲)

変数やプロシージャのスコープ(適用範囲) 【構文:変数の宣言】 { Dim | …

On Error ステートメント(例)その1
エラー処理(On Error ステートメント / Errオブジェクト)

On Error ステートメントの使い方 【構文 1】 On Error GoT …

Do Until...Loopステートメント例
繰り返し処理(Do…Loop ステートメント)

Do…Loop ステートメントの使い方 【構文 1】 Do [ Wh …

プロシージャを呼び出す(Call ステートメント)

プロシージャを呼び出す プロシージャ内から、別のプロシージャを呼び出すには、Ca …

引数の参照渡し・値渡し( ByRef, ByVal )

引数の「参照渡し」と「値渡し」 「参照渡し」とはプロシージャに引数として変数を渡 …

配列が引数のプロシージャ 例1
配列が引数のプロシージャを作成する

配列が引数のプロシージャを作成する 【構文】 { Sub | Function …

GoSub ステートメント
プロシージャ内のサブルーチンへ移動(GoSub…Return ステートメント)

GoSub…Return ステートメント GoSub ステートメント …

条件分岐(Select Case ステートメント)

Select Case ステートメントの使い方 【構文】 Select Case …