dポイントプレゼントキャンペーン実施中!

ExcelVBAでUserFormにコマンドボタンを作成し、
仮にコマンドボタン1、コマンドボタン2とすると、

数字キー「1」を押した時にコマンドボタン1をクリック、
数字キー「2」を押した時にコマンドボタン2をクリック

という動作は可能でしょうか?
キーボードは数字キーではなく「a」や「F1」等でもかまいません。

ご教授宜しくお願いします。

A 回答 (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

以上です。ただ、この方法はフォーム内にテキストボックスなどのコントロール
があると使えません。
    • good
    • 0
この回答へのお礼

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

ありがとうございました!

お礼日時:2005/12/27 23:50

s_husky です


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

こんにちは。

KenKen_SP です。

コマンドボタンの Accelerator プロパティに割り当てるキーを文字列で
指定します。 c と入力すると [Alt]+[c] でそのボタンにフォーカスが
移動します。-->Click イベントが発生

この時 Caption プロパティーの文字列末尾に (C) といれると、Excel の
メニューのようにショートカットキーを表すアンダーバーが表示されます。

コードで書けば、こんな感じ。

With CommandButton1
  'アクセスキーとして、"C" を割当
  .Accelerator = "C"
  .Caption = "Sample(C)"
End With

以上が通常の方法です。Window の標準操作方法と同様で[Alt]キーとの組み
合わせによる操作となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/27 23:52

こんばんは。



私は、ExcelのVBAを主に使っておりますが、#1 さんの回答は良く分りません。

私の回答としては、それぞれのコマンドボタンのプロパティのAccelerator に、1 とか a などを入れてあげれば、Alt + 1, Alt + a などで、実行されます。もちろん、Userform のInitalize に、ループでマクロで設定しても良いです。

ただ、キーボード入力に、直結するというのは不可能な気がしますね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なんと!こんな簡単に設定できたのですね。
本当に助かりました。

ありがとうございました。

お礼日時:2005/12/27 23:00

1、コントロールツールボックスのツールの選択をクリックし、


2、Threed Command Button Control を配置。
3、同CaptionでXXXX(&1) とキーを指定。
{Alt}{1}で対応するマクロが実行されます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
申し訳ないのですが、手順がいまいちよく分かりません。

>1、コントロールツールボックスのツールの選択をクリックし、
>2、Threed Command Button Control を配置。

これは ツール→その他のコントロール から Threed Command Button Control を追加する。
という意味なのでしょうか?
(ちなみにOffice2003です)

追加された Threed Command Button Controlのコメントは「不明」を表示されてしまい、
UserFormに追加しようとしても「クラスが登録されていません」と
エラーメッセージが出てしまいます。
Threed16.ocxはPC内にあります。

何か別途インストールしなければならないのでしょうか?

申し訳ございませんが、ご教授願います。

お礼日時:2005/12/27 22:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています