VBA 引数が省略された時の 2通りの処理

① 初期値を設定する

Sub Sample10()
Call hiki1("Excel") ①の呼び出し
Call hiki2("VBA")   ②の呼び出し
End Sub

Sub hiki1(msg As String, Optional n As Long = 7)
Dim i As Long, buf As String
For i = 1 To n
buf = buf & msg & vbCrLf
Next
MsgBox buf
End Sub

 

② 省略されたことを調べる IsMissing

Sub hiki2(msg As String, Optional n)

Dim i As Long, buf As String
If IsMissing(n) = True Then n = 10 'IsMissing は引数が省略されていると Trueを返す
For i = 1 To n
buf = buf & msg & vbCrLf
Next
MsgBox buf

End Sub