Think Twice
IT技術メモ | VBAのメモ
Created: 2021-04-07 / Updated: 2021-04-07

VBAでプロシージャ呼び出し時の括弧について


VBAでプロシージャ呼び出し時、括弧を付けなければいけなかったり、付けなくても大丈夫だったりと分かりづらいのでまとめました。

目次


プロシージャ呼び出し

まずは用語です。

プロシージャ 説明
Subプロシージャ 戻り値なしの処理を宣言するときに使う
Functionプロシージャ 戻り値ありの処理を宣言するときに使う
サンプルコード
Copy
' プロシージャを定義する
Sub sub0()
Sub sub1(s1 As String)
Sub sub2(s1 As String, s2 As String)
Function func0() As String
Function func1(s1 As String) As String
Function func2(s1 As String, s2 As String) As String

' 呼び出し
sub0
sub1 "a"
sub2 "a", "b"

' これはNG(括弧を付けたい場合は、頭にCallがいる)
' sub0()
' sub1("a")
' sub2("a", "b")

' 括弧を付けたい場合は、頭にCallを付ける
Call sub0() ' → 自動フォーマッターで、Call sub0 にされてしまう…
Call sub0
Call sub1("a")
Call sub2("a", "b")

Dim res As String
res = func0
res = func0() ' → 戻り値ありの場合は、引数が0個の場合、括弧を付けても付けなくてもよい
res = func1("a")
res = func2("a", "b")

' これはNG(戻り値ありの場合は、Callは付けられない)
' Call res = func0
' Call res = func0()
' Call res = func1("a")
' Call res = func2("a", "b")

まとめ

戻り値なしの時

戻り値ありの時

スタイルの使い分け


参考

参考サイト