ACCESS Activecontrolプロパティで現在のコントロールを指定する方法

ACCESSのVBAでは、フォームのテキストボックスやボタンなど、コントロールの名前を指定して処理を作成します。
この際、決まったコントロールに対して処理を作るのではなく、現在操作されたテキストボックス、現在押されたボタンに対して処理を作りたい場合があります。
そんな時はActivecontrolプロパティを利用すると便利です。
今回は、Activecontrolプロパティで現在のコントロールを指定する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
Activecontrolプロパティとは
Activecontrolプロパティとは、ACCESSのフォーム上で現在選択されているコントロール(テキストボックスやボタン)を指定するプロパティです。
Activecontrolプロパティを使うと、VBAのプログラムで動的にコントロール名を指定することが可能になります。
以下の構文で利用します。
Me.ActiveControl
実際の利用例で説明した方がわかりやすいので、次の項で説明しますね。
Activecontrolプロパティの利用例
今回はサンプルとして以下のフォームを準備しました。

テスト1~3のボタンが並んでいます。
このボタンを押した際に、ボタンに表示されているテキスト(表題)をメッセージボックスで表示するようにしてみましょう。
フォームをデザインビューにして、ボタンのクリック時イベントを設定します。
テスト1~テスト3の3つのボタンがあるので、以下の記述となります。
Private Sub テスト1_ボタン_Click()
MsgBox "ボタン名は" & Me!テスト1_ボタン.Caption & "です。"
End Sub
Private Sub テスト2_ボタン_Click()
MsgBox "ボタン名は" & Me!テスト2_ボタン.Caption & "です。"
End Sub
Private Sub テスト3_ボタン_Click()
MsgBox "ボタン名は" & Me!テスト3_ボタン.Caption & "です。"
End Sub
同様の記述をボタン3つ分繰り返すという記載になっています。
これでもよいのですが、繰り返しが多いのでちょっと煩雑ですよね。修正する場合は3か所全部修正しなければいけません。
これを1つの処理で統合する場合に、Activecontrolプロパティを利用できます。
Activecontrolプロパティを使って、ボタン名を指定しないプロシージャの書き方に変えてみましょう。
Private Sub テスト1_ボタン_Click()
Call caption_msg
End Sub
Private Sub テスト2_ボタン_Click()
Call caption_msg
End Sub
Private Sub テスト3_ボタン_Click()
Call caption_msg
End Sub
Private Sub caption_msg()
MsgBox "ボタン名は" & Me.ActiveControl.Caption & "です。"
End Sub
caption_msgという新しいプロシージャを作成しました。
各ボタンのイベントはcaption_msgを呼び出すだけにして簡略化しています。
caption_msgプロシージャでは、Me.ActiveControl.Captionという指定をすることで、フォームでアクティブなコントロールの表題を自動的に取得してくれます。
今回はメッセージボックスで表示させていますが、実際にはボタンの表題を取得して処理を条件分岐させる場合などに便利です。
以上、Activecontrolプロパティで現在のコントロールを指定する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に200以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

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