【VBA】どのボタンが押されたのか判定する(Application.Caller)

【VBA】どのボタンが押されたのか判定する(Application.Caller) VBA
この記事は約2分で読めます。

マクロ(Excel VBA)で押されたボタンによって処理を変えたいと思ったことはありませんか?

Applicationオブジェクトの「Application.Caller」を使うことで、どのボタンが押されたのか判断できるようになります!

今回はサンプルとして押されたボタンの名前、文字を判定するソースをご紹介します。

スポンサーリンク
[ad01]

Application.Caller

ボタン(フォームコントロール)でマクロを動かします。

サンプルとして「新規」、「更新」の2種類のボタンを配置して作成したマクロを登録。

ボタン名で判定

設定したボタンを右クリックしてボタンの名前を確認します。
ここでは「新規」がボタン 1、「更新」がボタン 2と設定されています。

新規(ボタン 1)ボタンを選択
更新(ボタン 2)ボタンを選択
Sub ボタン名を判定()

Dim Button_Name As String

'押されたボタンを判定
Button_Name = Application.Caller

If Button_Name = "ボタン 1" Then

    MsgBox "ボタン 1が押されました。"
    
    ElseIf Button_Name = "ボタン 2" Then
    
    MsgBox "ボタン 2が押されました。"

End If

End Sub

ボタンの名称で判定

次はボタンに記載されている文字を判定する方法です。

「Button_Text = Worksheets(1).Buttons(Application.Caller).Text」でボタンの文字を取得できるので、ボタンの名称が確定している場合は、こちらの方が使いやすいかもしれませんね。

新規ボタンを選択
更新ボタンを選択
Sub ボタンの文字を判定()

Dim Button_Text As String

'押されたボタンの文字を判定
Button_Text = Worksheets(1).Buttons(Application.Caller).Text

If Button_Text = "新規" Then

    MsgBox "新規ボタンが押されました。"
    
    ElseIf Button_Text = "更新" Then
    
    MsgBox "更新ボタンが押されました。"

End If

End Sub

まとめ

今回は「Application.Caller」の使い方について解説を行いました。

どのボタンを押したのか判定できるようになると、同じ処理をまとめることができるのでコードも見やすくなりますね。

この記事が気に入ったら
いいね ! しよう

Twitter で

VBAを学習する時間が取れない人

VBAは我流で組むことができますが、初心者だと作業時間が多く掛かったり、間違った部分を見つけるのに苦労したります。

VBAが組めるようになれば便利なことも多いですが、仕事をしながら勉強するのは結構大変…。

もし時間に追われて思うようにいかないのであればココナラで「VBAを組める人」に依頼してみませんか?

個人で販売しているため価格も抑えらえれます
まずはこちらから無料会員登録をして依頼をしてましょう!


VBA
スポンサーリンク
[ad01]
うめをフォローする
梅屋ラボ
タイトルとURLをコピーしました