[[20070314151621]] 『コマンドボタン(VBA)』(純丸) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コマンドボタン(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.