ACCESS Captionプロパティでボタン名を取得する方法

ACCESSのVBAで処理を作成する際、どのボタンを押したかで処理を判別したり、ボタン名をメッセージ表示したりするケースがあります。
こうした際にボタン名をプログラムの中に手書きしていると面倒ですし、ボタン名が変わった際にも手動で変更が必要ですよね。
そんな時はCaptionプロパティを使用すれば、操作したボタンの名前を取得することができます。
今回は、Captionプロパティでボタン名を取得する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
ボタン名を取得するコード
最初に結論からお伝えします。
ACCESSのフォーム上で今押されたボタン名を取得する際には、以下のコードを利用すると便利です。
Me.ActiveControl.Caption
以下、詳しく解説しますね。
コントロール名を表示するCaptionプロパティ
ACCESS VBAでは指定したコントロール名、正しくは表題を表示するCaptionというプロパティがあります。
これを使って簡単にボタンの表題を取得することができます。
Captionプロパティは以下の構文で利用します。
コントロール名.Caption
比較的簡単な構文ですね。
Captionプロパティの使用例
以下のフォームを使って、Captionプロパティの使用例をご紹介します。

中央にあるテストボタンを押すと、ボタンの表題である「テスト」がメッセージ表示されるようにしましょう。
フォームをデザインビューで開きます。

デザインビューでテストボタンを選択し、プロパティシートの「イベント」タブで「クリック時」イベントにイベントプロシージャを設定します。

設定するイベントプロシージャは以下の通りです。
Private Sub テスト_ボタン_Click()
MsgBox "ボタン名は" & Me!テスト_ボタン.Caption & "です。"
End Sub
Me!テスト_ボタン.Captionでテストボタンの表題を取得してメッセージボックス関数で表示させています。
フォームビューに戻ってテストボタンを押してみましょう。

このように、ボタン名が表示されました。
名前と表題の違い
Captionプロパティで取得するのはコントロールの表題です。
一方、コントロールには名前という設定項目もあります。

この2つの違いは何でしょうか?
名前は、このボタン自体の名前です。そのため、VBA等でこのボタンを指定する際には「テスト_ボタン」と記載します。
一方、表題はボタン上に表示される文字です。
名前と表題を分けることでボタン上に表示される文字を、ボタンの名前に依存せずに自由に変更できます。
Captionプロパティはボタンの表題を取得するプロパティですので注意してください。
ボタンの名前を取得したい場合は、Nameプロパティを利用します。
アクティブなコントロールの表題を取得する方法
上記の例では、
Me!テスト_ボタン.Caption
と、ボタン名を指定して表題を取得しました。
より汎用性を高めるために、アクティブなボタン、つまり今押されたボタンの表題を取得するには、以下のように記述を変更します。
Me.ActiveControl.Caption
ボタン名を指定する部分にActiveControlプロパティを利用しています。
ActiveControlプロパティはフォーム上で現在アクティブなコントロールを自動的に指定してくれるものです。
そのため、上記の記述を行えば押されたボタンの表題を、ボタン名を指定しなくても取得できるのです。
以上、Captionプロパティでボタン名を取得する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に200以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。