Access VBA質問箱 IV

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

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


703 / 2272 ツリー ←次へ | 前へ→

【10419】コンボボックスのキークリック時動作の設定について rim 08/6/18(水) 1:16 質問[未読]
【10474】Re:コンボボックスのキークリック時動作の... YU-TANG 08/7/21(月) 0:57 回答[未読]

【10419】コンボボックスのキークリック時動作の設...
質問  rim  - 08/6/18(水) 1:16 -

引用なし
パスワード
   いつも参考にさせてもらっています。
すごく簡単な質問かもしれないですが、表題について質問させてください。
Accessは2003 OSはXPを使用してます。

フォームにコンボボックスが複数ありまして全てのコンボボックスの
キークリック時イベントに以下の処理をしています。

(コンボボックスでEnterが入力された時コンボボックス内で改行する処理です。)
Private Sub コンボボックス名_Keydown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn And Shift = 0 Then
KeyCode = 0
SendKeys ("^{Enter}")
End If
End Sub
某掲示板から参照させていただきました。

現在では上記の処理をコンボボックスの数ぶん書いているのですが
それを短縮したいと思っています。

短縮方法としては全てのコンボボックスのキークリック時イベントへ
「=Combo_Keydown(KeyCode,Integer)」を設定し
コードをFunction Combo_Keydown(KeyCode As Integer, Shift As Integer)
に直しどのコンボボックスからも同じコードを読ませようと考えていますが
フォームからの引数が上手く渡らず
「オートメーションオブジェクト'KeyCode'は含まれません。」
とエラーが出てしまいます。

キークリック時イベントへの式の書き方をご教授ください。
上記の式を入力したところ自動で
「=Combo_KeydownDown([KeyCode],[Shift])」になっていました。

【10474】Re:コンボボックスのキークリック時動作...
回答  YU-TANG  - 08/7/21(月) 0:57 -

引用なし
パスワード
   ▼rim さん:
>短縮方法としては全てのコンボボックスのキークリック時イベントへ
>「=Combo_Keydown(KeyCode,Integer)」を設定し
>コードをFunction Combo_Keydown(KeyCode As Integer, Shift As Integer)

イベントプロパティでは、イベントプロシージャに渡る引数を受け取れません。

引数でキーコードを渡すのをあきらめて、共通関数内で Windows API を
使って押されているキーを独自に調べてみてはいかがでしょうか。

www.google.co.jp/search?hl=ja&q=Declare+Function+GetAsyncKeyState
www.google.co.jp/search?hl=ja&q=Declare+Function+GetKeyboardState

それでは。

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