Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11全般 : Excel 2019)
どのボタンが押されたかにつきまして
投稿日時: 23/01/08 10:18:15
投稿者: SA90118

●実行時エラー '13':型が一致しません。になります。
 
エラーにつきまして、ご教示のほどよろしくお願いいたします。
 
参考にしました。
http://www.k1simplify.com/vba/tipsleaf/callbuttonname.html
 
-----------------------------------------------------
Private Sub CommandButton1_Click()
 
  Call Sample1
 
    End Sub
 
Sub Sample1()
 
    Dim Button_Name As String
     
    'どのボタンが押されたか判断する
    Button_Name = Application.Caller '●実行時エラー '13':型が一致しません。
 
    MsgBox Button_Name
 
End Sub
---------------------------------------------------

回答
投稿日時: 23/01/08 10:37:10
投稿者: WinArrow

シートに設定するコマンドボタンには、2種類あります。
  
「フォームコントロール」と「ActiveX」です。
  
「フォームコントロール」のコマンドボタンでは、
プロシジャを共通化して、Application.Callerでボタン名を取得できますが、
  
「ActiveX」側では、Application.Callerでは対応ができないと思います。
  
今回の
>CommandButton1_Click
は、「ActiveX」なので、このようなエラーが出たわけです。
Application.Callerを利用するならば、「フォームコントロール」の
コマンドボタンをお勧めします。
但し、コマンドボタンに登録するマクロは、Sample1を指定すればよいです。

投稿日時: 23/01/08 10:44:32
投稿者: SA90118

WinArrow さん
 
ご返答いただきありがとうございます。
 
>シートに設定するコマンドボタンには、2種類あります。
>「フォームコントロール」と「ActiveX」です。
はい、大変勉強になりました。
 
> Application.Callerを利用するならば、「フォームコントロール」の
>コマンドボタンをお勧めします。
>但し、コマンドボタンに登録するマクロは、Sample1を指定すればよいです。
はい、分かりました。
 
お世話になりました。感謝申し上げます。