宣言 引数が省略可能な関数を作る

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


'======================================================================
'【通常】
Function OptionalTest1(A As Byte, B As Byte, C As ByteAs Byte
'**********************************
'引数が省略可能な関数を作る
'**********************************
'ユーザー定義関数

    OptionalTest1 = A + B + C

End Function


Private Sub Test1()
    MsgBox OptionalTest1(1, 2, 3)
End Sub


'======================================================================
'【省略可能型1】
Function OptionalTest2(A As Byte, B As ByteOptional C As Byte = 0) As Byte
'                                            ~~~~~~~~           ~~~
'**********************************
'引数が省略可能な関数を作る
'**********************************
'ユーザー定義関数
'[= 0]の数値は任意(省略された場合の数値)で設定可能です。

    OptionalTest2 = A + B + C

End Function


Private Sub Test2_1()
    MsgBox OptionalTest1(1, 2) '【通常】
    '↑コンパイルエラー!引数は省略できません!
End Sub


Private Sub Test2_2()
    MsgBox OptionalTest2(1, 2) '【省略可能型1】
    '↑エラーは無く答えが表示されます。
End Sub


'======================================================================
'【省略可能型2】
Function OptionalTest3(A As ByteOptional B As Byte = 0, Optional C As Byte = 0) As Byte
'                                 ~~~~~~~~           ~~~  ~~~~~~~~           ~~~
'**********************************
'引数が省略可能な関数を作る
'**********************************
'ユーザー定義関数
'[= 0]の数値は任意(省略された場合の数値)で設定可能です。

    OptionalTest3 = A + B + C

End Function


Private Sub Test3()
    MsgBox OptionalTest3(1) '【省略可能型2】
    '↑エラーは無く答えが表示されます。
    MsgBox OptionalTest3(1, 2) '【省略可能型2】
    '↑エラーは無く答えが表示されます。
    MsgBox OptionalTest3(1, , 3) '【省略可能型2】
    '↑エラーは無く答えが表示されます。
End Sub

'======================================================================
'【注意】
'Function OptionalTest3(Optional A As Byte = 0, B As Byte , Optional C As Byte = 0) As Byte
'                       ~~~~~~~~           ~~~              ~~~~~~~~           ~~~
'**********************************************************************
'[Optional]を指定した場合、それ以降の引数も省略可能でなければならない。
'**********************************************************************
'その場合すべて引数に[Optional]を付けて宣言する必要があります。
'**********************************************************************

'[Optional] キーワード
'[Optional] は、次の構文で使用します。
'
'Declare ステートメント
'
'Function ステートメント
'
'Property Get ステートメント
'
'Property Let ステートメント
'
'Property Set ステートメント
'
'Sub ステートメント

 

2000年01月01日|[VBサンプルコード]:[宣言]