コントロールにアクセスキーを設定する(Acceleratorプロパティ)
ユーザーフォームに設置したコントロールにアクセスキー(アクセラレーターキー)を設定するには Accelerator プロパティを使用します。アクセスキーに指定した文字をキーボードから押すことで、マウスでクリックすることでクリックしたのと同じイベントを発生させることができます。ここでは Excel のユーザーフォームで Accelerator プロパティを使ってコントロールにアクセスキーを設定する方法について解説します。
(Last modified: )
アクセスキーを設定する
ユーザーフォームに設置したコントロールに対してアクセスキーを設定するには Accelerator
プロパティを使用します。デフォルトでは Accelerator
の値は空文字( ""
)となっており設定されていません。
コントロールに対するアクセスキーを設定するには Accelerator
プロパティの項目をクリックし、設定する文字を直接入力してください。複数の文字を入力しても構いませんが、先頭の文字だけが有効となります。
アクセスキーに設定した文字が対象のコントロールに表示されているキャプションの文字列の中のいずれかの文字だった場合、一致した文字に下線が表示されます。
対象のコントロールに表示されているキャプションのいずれの文字にも一致しない文字をアクセスキーとして設定することもできますが、利用者がアクセスキーがどの文字なのか分からないのでお勧めはしません。例えば "保存" と表示されているコントロールにアクセスキーとして "c" を設定する場合は "保存(c)" のようにアクセスキーで使用する文字を追加で表示しておくといいかと思います。
このように Accelerator
プロパティの値を変更することで、コントロールに対するアクセスキーを設定することができます。
アクセスキーの使い方
アクセスキーを使って対象のコントロールを実行するには Alt
キーを押しながらアクセスキーに設定されている文字を押してください。
Alt + アクセスキーに設定した文字
簡単なサンプルを使ってアクセスキーをどのように使うのか試してみます。ユーザーフォームに 2 つのコマンドボタンを設置し、それぞれアクセスキーを設定しています。それぞれのボタンをクリックするとメッセージボックスが表示されるようにコードを記述してあります。
現在「Open」ボタンにフォーカスがある状態です。「Close」ボタンのアクセスキーは c
なので、このボタンをアクセスキーを使って実行するには Alt
+ C
キーを押してください。すると「Close」ボタンにフォーカスが移動し、「Close」ボタンがクリックされたときと同じ処理が実行されます。
このときボタンがクリックされたときのような表示上の変化はありません。
VBAのプログラムの中でAcceleratorプロパティを設定する
プロパティウィンドウを使って Accelerator
プロパティの値を変更する代わりに、 VBA のコードを記述して Accelerator
プロパティの値を変更することもできます。
プログラムの中で Accelerator
プロパティを設定する場合は次の書式を使用します。
オブジェクト.Accelerator [= String ]
対象のオブジェクトの Accelerator
プロパティに対してアクセスキーに設定する文字を代入します。
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中で Accelerator
プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize
イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click
イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの Initialize
イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。合わせてそれぞれのボタンがクリックされたときのイベントプロシージャを記述します。
Private Sub UserForm_Initialize() CommandButton1.Accelerator = "p" CommandButton2.Accelerator = "s" End Sub Private Sub CommandButton1_Click() MsgBox "Open" End Sub Private Sub CommandButton2_Click() MsgBox "Close" End Sub
ユーザーフォームに設置した二つのコマンドボタンに対してそれぞれコントロールキーを設定しています。
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。それぞれのコマンドボタンには、アクセスキーに設定した文字と同じ文字に下線が表示されています。
それではアクセスキーを使ってコントロールを実行してみます。 Alt
+ s
キーを押してください。「Close」ボタンが実行されて、メッセージボックスが表示されます。
このように VBA のプログラムの中で Accelerator
プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで Accelerator プロパティを使ってコントロールにアクセスキーを設定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。