プロシージャ

プロシージャとは、実行時に1つの単位として処理されるコードの集まりのことです。機能としてはC言語などの関数と同じですが、VBAではこれをSub (サブルーチン) とFunction (関数) に区別して考えます。

プロシージャの種類

  • Subプロシージャ (Sub ~ End Sub)
    • イベント プロシージャ
  • Functionプロシージャ (Function ~ End Function)
  • Propertyプロシージャ (Property ~ End Property)
Subプロシージャと Functionプロシージャの違い
プロシージャ 返値
Subプロシージャ ×
Functionプロシージャ

Subプロシージャ

[Private | Public | Friend] [Static] Sub name [(arglist)]

    [statements]

    [Exit Sub]

    [statements]

End Sub

Functionプロシージャ

[Public | Private | Friend] [Static] Function name [(arglist)] [As type]

    [statements]
    [name = expression]

    [Exit Function]

    [statements]
    [name = expression]

End Function

Propertyプロシージャ

[Public | Private] [Static]
Property {Get | Let | Set} name [(arguments)] [As type]

    statements

End Property
プロシージャ 説明
Property Let プロパティに値を設定する
Property Get プロパティの値を取得する
Property Set オブジェクトへの参照を設定する

構文

変数の型宣言

Dim 変数名 As 変数の型

変数のデータ型

引数の型宣言

プロシージャ名( 引数1 As 引数の型, 引数2 As 引数の型, ... )

返値の型宣言

Function プロシージャ名() As 返値の型

参照渡し、値渡し

参照渡し

プロシージャ名( 引数 )
または
プロシージャ名( ByRef 引数 )

値渡し

プロシージャ名( ByVal 引数 )

変数のスコープ

  • プロシージャ レベル … サブ プロシージャなどのプロシージャ内
  • モジュール レベル … フォーム モジュールおよびコード モジュールの宣言セクション (プロシージャ外)
    • プライベート モジュール レベル
    • パブリック モジュール レベル