機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA > VBAのステートメント

Subステートメント



Subステートメント

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

キーワードPublicは省略可能です。すべてのモジュールから参照できるSubプロシージャを宣言します。
キーワードPrivateは省略可能です。Subプロシージャを記述したモジュールからのみ参照できるSubプロシージャを宣言します。
キーワードFriendは省略可能です。クラスモジュール内で使用します。
nameには、Subプロシージャの名前を指定します。
引数arglistは省略可能です。Subプロシージャが受け取る引数リストを指定します。

解説
Subプロシージャを作成します。
引数arglistは、次のように指定します。

[Optional][ByVal|ByRef][ParamArray]varname[()][As type][=defaultvalue]
Optionalは省略可能です。Optionalを付けた宣言した引数は、Subプロシージャを呼び出す際に省略できます。ただし、Optionalを付けた引数以降の引数にもすべてOptionalを付けなければなりません。また、ParmArrayを使った場合には、どの引数にもOptionalを付けることはできません。
Optionalを付けた引数が渡されたかどうかを調べるには、IsMissing関数を使います。
ByValは省略可能です。その引数が値渡しで渡されることを示します。
ByRefは省略可能です。その引数が参照渡しで渡されることを示します。ByValとByRefの両方を省略した場合は、ByRefが指定されたものとして扱います。
ParmArrayは省略可能です。arglistの最後の引数でのみ試用できます。ParmArrayを付けると、その引数は省略可能な配列として扱われます。Optional、ByVal、ByRefのキーワードといっしょに使うことはできません。
varnameには引数の名前を指定します。引数を配列として扱う場合は、引数名の後ろに()を付けます。
typeは省略可能です。引数のデータ型を指定します。
defaultvalueは省略可能です。引数を名前付き引数として扱う場合に指定します。

SubプロシージャはFunctionプロシージャと違い値を返しません。

サンプル
次の例は、Subプロシージャを作成します。

Sub Sample()
    Call mySub1("test")
End Sub

Private Sub mySub1(tmp As String)
    MsgBox "mySub1で受け取った引数は" & tmp & "です"
End Sub



このエントリーをはてなブックマークに追加