• ベストアンサー

Excel VBA 複数のコマンドボタンをキーボードで操作できませんか?

ExcelVBAでUserFormにコマンドボタンを作成し、 仮にコマンドボタン1、コマンドボタン2とすると、 数字キー「1」を押した時にコマンドボタン1をクリック、 数字キー「2」を押した時にコマンドボタン2をクリック という動作は可能でしょうか? キーボードは数字キーではなく「a」や「F1」等でもかまいません。 ご教授宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#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 以上です。ただ、この方法はフォーム内にテキストボックスなどのコントロール があると使えません。

kikei
質問者

お礼

おお、出来ました! まさに期待していたとおりの動きです。 ありがとうございました!

その他の回答 (4)

noname#22222
noname#22222
回答No.5

s_husky です Office2000+OfficeXPを混在させている他には何もしてないと思ったのですが。いずれにしろ、非標準的なやり方を敢えて示したのはミスです。ゴミとして無視して下さい。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。 コマンドボタンの Accelerator プロパティに割り当てるキーを文字列で 指定します。 c と入力すると [Alt]+[c] でそのボタンにフォーカスが 移動します。-->Click イベントが発生 この時 Caption プロパティーの文字列末尾に (C) といれると、Excel の メニューのようにショートカットキーを表すアンダーバーが表示されます。 コードで書けば、こんな感じ。 With CommandButton1   'アクセスキーとして、"C" を割当   .Accelerator = "C"   .Caption = "Sample(C)" End With 以上が通常の方法です。Window の標準操作方法と同様で[Alt]キーとの組み 合わせによる操作となります。

kikei
質問者

お礼

ありがとうございます。アンダーバーが表示されました。 イメージ的に分かりやすくていいですね。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 私は、ExcelのVBAを主に使っておりますが、#1 さんの回答は良く分りません。 私の回答としては、それぞれのコマンドボタンのプロパティのAccelerator に、1 とか a などを入れてあげれば、Alt + 1, Alt + a などで、実行されます。もちろん、Userform のInitalize に、ループでマクロで設定しても良いです。 ただ、キーボード入力に、直結するというのは不可能な気がしますね。

kikei
質問者

お礼

回答ありがとうございます。 なんと!こんな簡単に設定できたのですね。 本当に助かりました。 ありがとうございました。

noname#22222
noname#22222
回答No.1

1、コントロールツールボックスのツールの選択をクリックし、 2、Threed Command Button Control を配置。 3、同CaptionでXXXX(&1) とキーを指定。 {Alt}{1}で対応するマクロが実行されます。

kikei
質問者

お礼

ご回答ありがとうございます。 申し訳ないのですが、手順がいまいちよく分かりません。 >1、コントロールツールボックスのツールの選択をクリックし、 >2、Threed Command Button Control を配置。 これは ツール→その他のコントロール から Threed Command Button Control を追加する。 という意味なのでしょうか? (ちなみにOffice2003です) 追加された Threed Command Button Controlのコメントは「不明」を表示されてしまい、 UserFormに追加しようとしても「クラスが登録されていません」と エラーメッセージが出てしまいます。 Threed16.ocxはPC内にあります。 何か別途インストールしなければならないのでしょうか? 申し訳ございませんが、ご教授願います。

関連するQ&A