VBAでは、メソッドのオーバーロードができなかった
やってみた。
準備
標準モジュールのコード
Private Sub makeUserSick() '……(1)
MsgBox " _________" & vbCrLf & _
" / \ " & vbCrLf & _
"/ /・\ /・\ \" & vbCrLf & _
"|  ̄ ̄  ̄ | ち~んw" & vbCrLf & _
"| (_人_) |" & vbCrLf & _
"| \ | |" & vbCrLf & _
"\ \_| /"
End Sub
Private Sub makeUserSick(ByVal msg As String) '……(2)
MsgBox msg & vbCrLf & _
" _________" & vbCrLf & _
" / \ " & vbCrLf & _
"/ /・\ /・\ \" & vbCrLf & _
"|  ̄ ̄  ̄ | ち~んw" & vbCrLf & _
"| (_人_) |" & vbCrLf & _
"| \ | |" & vbCrLf & _
"\ \_| /"
End Sub
説明
- (1)の「makeUserSick」プロシージャは、引数なし。
- (2)の「makeUserSick」プロシージャは、引数「msg」がある。
同じプロシージャ名で、違うのは引数の構成だけなので、これができるんなら、メソッドのオーバーロードが可能、ということになる。
実行
では、実行してみよう。
実行用のコード
Sub test()
Call makeUserSick '……(1)
Call makeUserSick("アホwww") '……(2)
End Sub
コードの説明
- (1)は、引数なしで呼び出し。
- (2)は、引数として文字列「アホwww」を渡して呼び出し。
果たして、実行結果は……???
実行結果
実行以前にコンパイルエラーwww
結論
え? 当たり前、ですか?
そら知らなんだw サーセンwww