- ベストアンサー
Excel VBA 複数のコマンドボタンをキーボードで操作できませんか?
ExcelVBAでUserFormにコマンドボタンを作成し、 仮にコマンドボタン1、コマンドボタン2とすると、 数字キー「1」を押した時にコマンドボタン1をクリック、 数字キー「2」を押した時にコマンドボタン2をクリック という動作は可能でしょうか? キーボードは数字キーではなく「a」や「F1」等でもかまいません。 ご教授宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#3 です。補足します。 フォーム内にコマンドボタンしかない場合【限定】ですが、下記の方法 だと [Alt]キーとの組み合わせが不要で、単独キーでショートカットで きます。 1. フォーム内の全てのコマンドボタンで以下のプロパティーを設定 1)TabStop を False に 2)TakeFocusOnClick を False に 2. フォームに下記のコードをコピー&ペースト。 Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case Is = 49 ' Number 1 Call CommandButton1_Click '又は CommandButton1.Value = True Case Is = 50 ' Number 2 '以下同様 Case Is = 51 ' Number 3 End Select End Sub 以上です。ただ、この方法はフォーム内にテキストボックスなどのコントロール があると使えません。
その他の回答 (4)
s_husky です Office2000+OfficeXPを混在させている他には何もしてないと思ったのですが。いずれにしろ、非標準的なやり方を敢えて示したのはミスです。ゴミとして無視して下さい。
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。KenKen_SP です。 コマンドボタンの Accelerator プロパティに割り当てるキーを文字列で 指定します。 c と入力すると [Alt]+[c] でそのボタンにフォーカスが 移動します。-->Click イベントが発生 この時 Caption プロパティーの文字列末尾に (C) といれると、Excel の メニューのようにショートカットキーを表すアンダーバーが表示されます。 コードで書けば、こんな感じ。 With CommandButton1 'アクセスキーとして、"C" を割当 .Accelerator = "C" .Caption = "Sample(C)" End With 以上が通常の方法です。Window の標準操作方法と同様で[Alt]キーとの組み 合わせによる操作となります。
お礼
ありがとうございます。アンダーバーが表示されました。 イメージ的に分かりやすくていいですね。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 私は、ExcelのVBAを主に使っておりますが、#1 さんの回答は良く分りません。 私の回答としては、それぞれのコマンドボタンのプロパティのAccelerator に、1 とか a などを入れてあげれば、Alt + 1, Alt + a などで、実行されます。もちろん、Userform のInitalize に、ループでマクロで設定しても良いです。 ただ、キーボード入力に、直結するというのは不可能な気がしますね。
お礼
回答ありがとうございます。 なんと!こんな簡単に設定できたのですね。 本当に助かりました。 ありがとうございました。
1、コントロールツールボックスのツールの選択をクリックし、 2、Threed Command Button Control を配置。 3、同CaptionでXXXX(&1) とキーを指定。 {Alt}{1}で対応するマクロが実行されます。
お礼
ご回答ありがとうございます。 申し訳ないのですが、手順がいまいちよく分かりません。 >1、コントロールツールボックスのツールの選択をクリックし、 >2、Threed Command Button Control を配置。 これは ツール→その他のコントロール から Threed Command Button Control を追加する。 という意味なのでしょうか? (ちなみにOffice2003です) 追加された Threed Command Button Controlのコメントは「不明」を表示されてしまい、 UserFormに追加しようとしても「クラスが登録されていません」と エラーメッセージが出てしまいます。 Threed16.ocxはPC内にあります。 何か別途インストールしなければならないのでしょうか? 申し訳ございませんが、ご教授願います。
お礼
おお、出来ました! まさに期待していたとおりの動きです。 ありがとうございました!