Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11472 / 13644 ツリー ←次へ | 前へ→

【15846】フォームをキーで操作したい。 さじた 04/7/9(金) 9:17 質問[未読]
【15847】Re:フォームをキーで操作したい。 IROC 04/7/9(金) 10:13 回答[未読]
【15853】Re:フォームをキーで操作したい。 さじた 04/7/9(金) 12:58 質問[未読]
【15894】Re:フォームをキーで操作したい。 [名前なし] 04/7/11(日) 2:10 回答[未読]
【15896】Re:フォームをキーで操作したい。 bykin 04/7/11(日) 8:40 回答[未読]
【15905】Re:フォームをキーで操作したい。 さじた 04/7/11(日) 19:12 お礼[未読]

【15846】フォームをキーで操作したい。
質問  さじた  - 04/7/9(金) 9:17 -

引用なし
パスワード
   VBA初心者です。

フォームにコマンドボタン等複数のコントロールを
配置して、通常はマウスで操作しているのですが、
場合によってはマウスを使わず、キーボードで操作
したいと考えています。

イメージとしては、例えば4つコマンドボタンを
配置して、
 ・カーソル左キーが押されたらコマンド
  ボタンAの処理をする。
 ・カーソル右キーが押されたら、、、

ということを実現したいです。

特定のコントロールにフォーカスがあるときは、
そのコントロールのkeydownイベントで処理できる
と思うのですが、意図しているコントロールに
フォーカスがない場合にも上記のような事を
行うにはどうしたらよいでしょうか?

どなたかご教示お願いします。

【15847】Re:フォームをキーで操作したい。
回答  IROC  - 04/7/9(金) 10:13 -

引用なし
パスワード
   Onkey は使えませんか?

【15853】Re:フォームをキーで操作したい。
質問  さじた  - 04/7/9(金) 12:58 -

引用なし
パスワード
   >Onkey は使えませんか?

 IROCさん、情報ありがとうございます。
 調べて試してみたところ、うまくいけそうだったのですが、
 力足らず、意図したものがうまくできませんでした。

 フォームを表示した状態で、フォームにフォーカス
 があるとonkeyイベントが発生しないようです。
 ワークシートをクリックしてselectした状態
 だと、確かにonkeyが拾われました。

 フォームが前面にある状態(フォーカスがある
 というか、フォームの青いウィンドウバーが濃くなっている状態)
 のときに、キー操作でフォームのコントロールのCLICKなど
 を発生させることができません。
 困りました。。。

【15894】Re:フォームをキーで操作したい。
回答  [名前なし]  - 04/7/11(日) 2:10 -

引用なし
パスワード
   フォームのKeyUpイベントじゃダメですか?

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 Select Case KeyCode
 Case vbKeyLeft
  MsgBox "←"
 Case vbKeyRight
  MsgBox "→"
 Case vbKeyUp
  MsgBox "↑"
 Case vbKeyDown
  MsgBox "↓"
 End Select
End Sub

【15896】Re:フォームをキーで操作したい。
回答  bykin  - 04/7/11(日) 8:40 -

引用なし
パスワード
   おはようさん。

矢印キーやのうてもええんやったら・・・
コントロールの Accelerator プロパティを設定すればええんとちゃいまっか?
たとえばこのプロパティに A を設定すると、Alt + A を押せばそのコントロールを
クリックしたのと同じ結果になります。
当該コントロールの Caption が日本語なんやったら、 Caption の最後に (A) を
追加すれば、自動的に下線が引かれて視覚的にわかりやすくなります。

試してみてな。
ほな。

【15905】Re:フォームをキーで操作したい。
お礼  さじた  - 04/7/11(日) 19:12 -

引用なし
パスワード
   bykin さん

ありがとうございます。
アクセラレータキーでやってみます!

まとめると、、
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
1.フォームにフォーカスがあたっていると、
 Application.OnKeyメソッドが使えない。
2.別の方法として、フォームのkeyDownを使う
 方法では、
 フォームの全てのコントロールが選択不可の
 状態でなければ、フォームのkeyDownイベント
 がおきません。(そのときフォーカスのある
 コントロールに対してのkeyDownになってしまう。)

ですので、キーボードでフォームのコントロール
をクリックするのと同じ操作をするには、
bykinさんのいうアクセラレータキーでないと無理
そうです。

ふー。
カーソルキーでやるのは無理そうですね。

11472 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free