たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_プロシージャの呼び出し

Sub/Functionプロシージャの呼び出しについて解説

【Call】ステートメント

プロシージャの呼び出しには【Call】ステートメントを使用
Callの記述は省略可能だがなるべく書いたほうがわかりやすい
呼び出す側のプロシージャは別名「親プロシージャ」
引数を複数渡す場合には、「Call(または変数) プロシージャ名 (引数1 , 引数2 , 引数3……)」のようにカンマで区切る

Subプロシージャの呼び出し

呼び出した先の処理結果をもとの場所で使用する必要がない場合に使用、呼び出し先のプロシージャは別名「サブルーチン」

▼構文▼
Call プロシージャ名 または Call プロシージャ名(引数)

▼記述例▼

Sub callsSub1()
 debug.Print "本日の夕食は"
 call callSub2("生野菜と")
 call callSub2("煮魚と")
 call callSub2("おひたし")
End Sub

Sub callSub2(callStr As String)
 debug.Print callStr
End Sub

▼処理結果▼

Functionプロシージャの呼び出し

呼び出した先の処理結果をもとの場所で使用する必要がある場合に使用、呼び出し先のプロシージャは別名「ユーザ定義関数」

▼基本の構文▼
変数 = プロシージャ名() または 変数 = プロシージャ名(引数)

引数が1つの場合の記述例
Sub callFun1()
  Dim callStr1 As String
  Dim callStr2 As String
  callStr1 = callFun2()
  callStr2 = callFun3("絶対に")
  Debug.Print callStr1 & callStr2
End Sub

Function callFun2() As String
  callFun2 = "お味噌汁は"
End Function

Function callFun3(callStr2 As String) As String
  callFun3 = callStr2 & "欠かせない"
End Function

▼処理結果▼


引数が2つ以上の場合の記述例

呼び出し先のプロシージャ側(ユーザ定義関数)では、親プロシージャと同じ順番で引数を記述のこと

Sub callFun1()
  Debug.Print callFun2("ポン酢?", 3)
End Sub

Function callFun2(callStr As String, CallNum As Long) As String
  Dim i As Long
  For i = 1 To CallNum
    callFun2 = callFun2 & "本当に" & callStr & vbNewLine
  Next i
End Function

▼処理結果▼

名前付き引数の記述例

名前付き引数を使用する場合には「引数名 := 値」のように記述
以下の例のように、受け取る側のプロシージャでは引数を記述する順番を親プロシージャと同じにする必要はない

Sub callFun1()
  Debug.Print callFun2(id:="0001", name:="tama-shi")
End Sub

Function callFun2(name As String, id As String) As String
    callFun2 = ”登録IDが” & id & "の" & name
End Function

▼処理結果▼