例えばPythonの場合
def add(a,b): //add関数の定義
return a + b
x = add(1,2) // xにadd関数を使って「1+2」を格納 ※Pythonは変数型の定義が必ずしも必要ではない
print(x)
----------ターミナル---------------------
>>3
みたいな感じでreturnを使うと関数の値を戻り値として取得できるが、
VBAにも戻り値を取得する際の記法があり、 その際には以下のように書く
変数もしくは何らかの参照情報 = 関数(引数1,・・・)
※引数の周りに半角英数の括弧()をつける
戻り値を必要としない場合は逆に半角英数の括弧()をつけない
そのため、例えばMsgBoxを使用する場合、見た目ダイアログボックスとかモーダルぽいがVBAでは実のところ関数であるため
Sub Sample()
Dim x As Long
x = MsgBox("これはテストですか",vbYesNo)
Debug.Print x 'Pythonで言うところのprint()、イミディエイトウィンドウに出力
End Sub
のように書く。
最後のDebug.Print xがなくても、「表示されない」だけでエラーにはならない
上記の場合、引数にvbYesNoがあるためダイアログボックスには「はい」「いいえ」を聞いてくるボタンが出てきて、「はい」を押すと「6」、「いいえ」を押すと「7」がイミディエイトウィンドウに出力される。
MsgBox関数の戻り値が何になるかは、主な参考資料②に従う
なお、VBAは何らかのセル範囲の参照情報に戻り値を代入できるため
Sub Sample()
Range("A1").Value = MsgBox("これはテストですか",vbYesNo)
End Sub
みたいなコードもある。
この場合、ダイアログボックスに答えると返り値がA1セルに代入される
なお、返り値を必要としない場合は
Sub Sample()
MsgBox "これはテストですか",vbYesNo
End Sub
というようになる
主な参考資料
①エクセルの神髄
https://excel-ubara.com/excelvba1/EXCELVBA323.html
②Microsoft公式 MsgBox関数
https://support.microsoft.com/ja-jp/topic/msgbox-%E9%96%A2%E6%95%B0-e23511c8-4157-4e09-93a6-ba9f1749f4c0