初心者ですが宜しくお願いします。
F1キーを押す度にカウントが増えていくものを作りたく、下のようにして出来たのですが、次にフォーム上に新たにコマンドボタンを置くと、動作しなくなります。
何が悪いのか、ご教授お願いします。
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Static a As Integer
Select Case KeyCode
Case 112
a = a + 1
Label1 = a
End Select
End Sub
「Case 112」だと、後から見たときに何の事かわかりにくいので、
「Case vbKeyF1」などのように記述することをお奨めします。
> 新たにコマンドボタンを置くと、動作しなくなります。
Form_KeyDown を Command1_KeyDown にすればカウントされます。
> 何が悪いのか
大雑把に言えば、フォームに通知される前に、
アクティブなコントロールにキー入力が奪われるからです。
常に Form で受け取りたいのであれば、フォームの
KeyPreview プロパティを True にしておけば OK です。
# ただし、中には KeyPreview = True でも受け取れないキーもあるので注意。
素早い解答ありがとうございます。
うまく動作しました。
的確な解答な上に、その理由やアドバイスまで頂き、本当に感謝です。
ありがとうございました。
ツイート | ![]() |