0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VBA学習備忘録_11_VBAの戻り値の記法に関する注意

0
Posted at

例えば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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?