省略可能な引数の初期値

たまに、省略可能な引数の初期値を空っぽにすることがある。
↓ こんな感じで。

Sub Test(Optional myDate As Date = Empty)
    If myDate = Empty Then
        myDate = Date
    End If
    
    Debug.Print myDate
End Sub

日付の指定があった場合は、その日付に。
指定の日付が無い場合は、本日の日付に。

ちなみにEmptyではなくDateを初期値にすると、ご覧のとおり怒られる。
f:id:Infoment:20200412215731p:plain

ところで最近思ったのだが、上記の例で言えば、敢えて

 = Empty

まで書く必要があるのだろうか。これで充分のような気もする。

Sub Test(Optional myDate As Date)

敢えて利点を述べるなら、Date型は初期化の時点で何が入っているか?が明示されていることか。

Sub Test2()
    Dim r As Range
    Dim str As String
    Dim mydate As Date
    Dim i As Long
End Sub

f:id:Infoment:20200412220339p:plain

最近、自分のコードが冗長傾向にあると思っていたので、
今後は少しスリム化を心がけるとします。

参考まで。