コードの比較でApplication.Callerを使用しています。ユーザーがコマンドボタンをクリックすると、Application.Callerがコマンドボタンの名前を返すと想定していますが、よくわかりません。
msgbox(Application.Caller)のようなことをしようとしていますが、データ型が正しくないことに気づきました。Application.Callerが実際に何であるかをどのように把握しますか?
そのリンクに示されているように、Application.Caller
は常にString
タイプであるとは限りません
StrComp
2つの文字列を比較するものを使用しています。これを使用することをお勧めします。
Sub Sample()
If TypeName(Application.Caller) = "String" Then
MsgBox StrComp(Application.Caller, "Button1")
End If
End Sub
そして、このマクロをワークシートにあるフォームボタンに割り当てます。
私が以前に与えたリンクで与えられた例を見れば、それはあなたに自動的に明らかになるでしょう:)
Select Case TypeName(Application.Caller)
Case "Range"
v = Application.Caller.Address
Case "String"
v = Application.Caller
Case "Error"
v = "Error"
Case Else
v = "unknown"
End Select