[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コマンドボタン(VBA)』(純丸)
ユーザーフォームのコマンドボタンを、マウスによるクリックではなく キーボードで操作したいのですが、Accelerator プロパティ では、 Alt + 設定文字 となってしまいます。Altキー無しの単独アルファベットで クリックイベントを発生させる事は出来ないのでしょうか? 例えば、y を押せば YESボタンが、n を押せば NOボタンがクリックされたのと 同じようにしたいのです。尚、フォーカスは別のボタンにあることが前提です。 (純丸)(o^-')b
やったことはありませんが
Application.Onkey で UserForm1.CommandButton1.SetFocus させて SendKeys でクリック
なんてできませんか? (seiya)
クラスとか使うべきでしょうが、簡単に書きます。 CommandButton2にフォーカスがあるとして。 (Onkeyでもかまわないけど。) BJ
Private Sub CommandButton1_Click() MsgBox 123 End Sub
Private Sub CommandButton2_Click() MsgBox 456 End Sub
Private Sub CommandButton2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 89 Then 'Yキー CommandButton1 = True End If End Sub
BJさん、ありがとうございました。期待する動きになりました。 ボタンにKeyDown というイベントがあったのですね。勉強になりました。
seiyaさん、ダメでした。Onkeyメソッドでキー設定しても、 ユーザーフォーム上では無効のようです。例えば、 Application.OnKey "{ENTER}", "" としても、コマンドボタンや MsgBoxではEnterキーが有効で、クリックと同様に先に進んでしまいます。 (純丸)(o^-')b
Private Sub UserForm_Activate() Application.OnKey "a", "test" End Sub
Sub test() UserForm1.CommandButton1=true End Sub
見たいな感じでもだめ? 追伸:だめみたいですね... (seiya)
やっと検証が終わったら、衝突しました。 やっぱりだめですね。ユーザーフォームが表示された状態で a を押しても 何も起きません。その後、ユーザーフォームが表示されていない状態で a を押すとユーザーフォームが表示されますが、そこから先へは進みません。 (純丸)(o^-')b
お騒がせしました... (seiya)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.