2

コードの比較でApplication.Callerを使用しています。ユーザーがコマンドボタンをクリックすると、Application.Callerがコマンドボタンの名前を返すと想定していますが、よくわかりません。

msgbox(Application.Caller)のようなことをしようとしていますが、データ型が正しくないことに気づきました。Application.Callerが実際に何であるかをどのように把握しますか?

4

1 に答える 1

7

そのリンクに示されているように、Application.Callerは常にStringタイプであるとは限りません

StrComp2つの文字列を比較するものを使用しています。これを使用することをお勧めします。

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
于 2012-06-29T19:29:28.943 に答える