こんにちは、Ryoです。
VBAで扱うユーザーフォームはコマンドボタンで実行させることが多いですが、状況によっては都度ボタンクリックが煩わしいこともあります。そんな時はAcceleratorプロパティを使用することでコマンドボタンにアクセスキーを設定できますので、今回はその方法について書いていきます。
1.サンプル概要
アクセスキーサンプルとして以下画像のようなユーザーフォームを作成します。
各コマンドボタンに表記しているAlt + aなどがアクセスキーとして設定されているので、実行することでコマンドボタンのクリックと同様の動作になります。
各ボタンでの処理はテキストボックスに「コマンドボタン1~4」をそれぞれ表示するのみなので、アクセスキーを実行することでボタンを押さなくてもテキスト内容が変わります。
「キー:Alt +a」
「Alt + b」
「Alt + c」
「Alt + d」
このようにアクセスキーでボタンクリックと同様の動作が得られます。
2.ユーザーフォーム構成
構成としては画像の通りでUserForm1にTexrBox1とCommandButton1~4の4ヶを配置したものです。
その他には特別な設定はありませんので、フォントなどはお好みで良いと思います。
3.サンプルコード
◆ユーザーフォーム初期設定
Private Sub UserForm_Initialize() '各コマンドボタンに[Alt]キー+[指定文字]を割り当てる CommandButton1.Accelerator = "a" CommandButton2.Accelerator = "b" CommandButton3.Accelerator = "c" CommandButton4.Accelerator = "d" End Sub
この通りアクセスキーの設定はAcceleratorプロパティを使用して、UserForm1の初期処理として設定します。
オブジェクト.Accelerator = 割り当てキー
この構文に沿って”a”~”d”を割り当てていますので、Altキー+割り当てキーで対応するコマンドボタンをクリックしたときと同じ動作を行えるようになります。
サンプル上のコマンドボタン文字は割り当てたa~dに下線が引かれているのはアクセスキーであることの明示ですが、初期処理で設定したのでコマンドボタン上の表記文字も連動して変わったということなんだと思います。
◆各コマンドボタン処理
Private Sub CommandButton1_Click() TextBox1.Text = "コマンドボタン1" End Sub Private Sub CommandButton2_Click() TextBox1.Text = "コマンドボタン2" End Sub Private Sub CommandButton3_Click() TextBox1.Text = "コマンドボタン3" End Sub Private Sub CommandButton4_Click() TextBox1.Text = "コマンドボタン4" End Sub
各コマンドボタンをクリック、又は対応したアクセスキーによって処理される内容を記述する部分ですが、TextBox1に「コマンドボタン1~4」という文字列が入力されるという簡単な処理を記述しています。
これらの記述が終われば、UserFoem1を起動し設定したアクセスキーを押すとTextBox1の入力文字が変化すると思います。
4.まとめ
特に複雑な処理をすることなくAltキーとの組み合わせで使用可能なアクセスキーの設定をすることが出来ますから、ボタンクリック動作が煩わしいような環境の場合では有用だと思います。
因みにCtrlキーやShiftキーとの組み合わせは指定出来ませんので、ご注意くださいませ。
以上、【VBA】コマンドボタンをアクセスキーで実行する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo