カウンターがうまく動作しません

解決


TAPICS  2009-01-29 16:32:33  No: 101529  IP: [192.*.*.*]

初心者ですが宜しくお願いします。

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

編集 削除
魔界の仮面弁士  2009-01-29 16:52:03  No: 101530  IP: [192.*.*.*]

「Case 112」だと、後から見たときに何の事かわかりにくいので、
「Case vbKeyF1」などのように記述することをお奨めします。


> 新たにコマンドボタンを置くと、動作しなくなります。
Form_KeyDown を Command1_KeyDown にすればカウントされます。


> 何が悪いのか
大雑把に言えば、フォームに通知される前に、
アクティブなコントロールにキー入力が奪われるからです。

常に Form で受け取りたいのであれば、フォームの
KeyPreview プロパティを True にしておけば OK です。

# ただし、中には KeyPreview = True でも受け取れないキーもあるので注意。

編集 削除
TAPICS  2009-01-29 17:24:31  No: 101531  IP: [192.*.*.*]

素早い解答ありがとうございます。
うまく動作しました。

的確な解答な上に、その理由やアドバイスまで頂き、本当に感謝です。

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

編集 削除