[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『keyupのキー指定です』(miyama)
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 上記コードはどのキーを押してもイベントが発生しますが、「↓」「↑」「Enter」 のみのキーで発生するように設定することは出来ますでしょうか よろしくお願いします Excel2007Windows 7
↓のKeyCodeが40(vbKeyDown)、↑のKeyCodeが38(vbKeyUp)、EnterのKeyCodeが13(vbKeyReturn)みたいだから KeyCodeがこの三つの時だけ処理するようにしたらいいんじゃないかな? (春日野馨)
春日野馨様 ありがとうございます
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode.Value = 13 Or KeyCode.Value = 38 Or KeyCode.Value = 40 Then
End If end sub 上記形式でいいでしょうか。おこなってみます miyama
KeyCodeはオブジェクトじゃなくて変数なので >KeyCode.Value = 13 のような書き方はできません。 KeyCode = 13 が正しいです。 (momo)
おまけの情報。
VBE画面のメニューの 表示(V) -> オブジェクトブラウザ(O) でオブジェクトブラウザを表示させ その左側のクラス欄で KeyCodeConstants を選ぶと、右側にずらっと指定可能なキーコード定数がでてくる。 で、その定数をクリックすると、下のほうに、その値が Const vbKeyDown = 40 (&H28) のように表示される。
コードの可読性を考慮すると KeyCode = 13 といったように番号を直接指定するより KeyCode = vbKeyReturn というように表現するほうがわかりやすいかな。
(ぶらっと)
>KeyCodeはオブジェクトじゃなくて変数なので >>KeyCode.Value = 13 >のような書き方はできません。 >KeyCode = 13 >が正しいです。
↑この解釈はいささかおかしいので一言。 KeyCode As MSForms.ReturnInteger なのでKeyCodeはオブジェクト(クラス)です。 Class ReturnIntegerはMSFormsのメンバで、 PropertyであるValueはMSForms.ReturnIntegerの既定メンバです。 ですから、正しい書き方は KeyCode.Value = vbKeyReturn であり、 通常は省略して KeyCode = vbKeyReturn のように書くでしょう。 (sasa)
あら、よく調べてみるとホントですね 結構長い間認識を間違えてました。
普段、GetAsyncKeyStateを使う事の方が多いので ただのLong型だという思い込みが・・・^^;
sasaさんありがとうございます
という事でmiyamaさん、すみませんが私のは無視で。 (momo)
ちょろっと。 ExcelのVBAでのKeyUpでは KeyCode As MSForms.ReturnInteger だけど、VB6やAccessのVBAでは KeyCode As Integer となりますね。 私が見慣れているのは As Integer の方だったので、 Excelでは As MSForms.ReturnInteger なんだ、へぇ〜とここで認識した口です。 Excel VBAで KeyCode.Value と書きなれている人が、 Access VBA等を触る時に同様に記述して通らず「あれっ?」となるかも知れないので、一応補足として。 (ご近所PG)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.