戻り値の型はByte
ではなく、vbMsgBoxResult
のenum値です。
MSDNのドキュメントを見つけるのは難しくなってきていますが、とにかくRubberduckであなたは、戻り値の型を確認し、状況依存のラベルが特徴のCommandBar取得:

実際にロードするから来ていますプロジェクトの参照されているCOMライブラリを参照し、COMタイプとそのメンバーを繰り返します(私はRubberduckリポジトリを所有しています)。
vbMsgBoxResult
はEnum
され、基になる型がLong
、ないByte
です - あなたは簡単即時ペインでこれを確認することができます。括弧については
?TypeName(VbMsgBoxResult.vbOK)
Long
、特別なことは何もありませんについてMsgBox
- これは、他のすべての手順と同じ構文です。
この作品の理由:あなたは(!それは括弧が行うことだ)値によって渡される文字列引数を強制しているので
そして、これがない理由
MsgBox ("Test")
です作品は:1つの引数が関数にByVal
を渡されるとVBAが"Test", vbOkOnly
を評価することはできませんので
MsgBox ("Test", vbOkOnly)
です。
MsgBox ("Test"), (vbOkOnly)
をしかし、愚かになります
これが働くだろう。
Call MsgBox("Test", vbOkOnly)
:あなたのようなVBA
Function
を呼び出すには、あなたは括弧をドロップするか、[時代遅れ]明示的な
Call
構文を使用する
Sub
(つまり、あなたは、戻り値を気にしない場合)必要があります
あなたは 'MsgBox" Hello world! "を実行できますが、' = 'を使うときはvbOKOnly、" Say Hi "'( ')'が必要です。 –
'()'が好きであれば、 'Call'を前に置く' MsgBox( "Hello world!"、vbOKOnly、 "Say Hi") ' –
を呼んでください。今私は何かを表現する3つの新しいメソッドがあります:) @ScottCraner –