
No.3ベストアンサー
- 回答日時:
一度下記のようなルーチンを作った事があります。
常に Command1(n) で押された数字は Text1 に表示して FOCUS は Text1 に戻します。
Command2(n) は 四則演算ボタンです
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57 ' 数字キー
Call Command1_Click(KeyAscii - 48)
Case 61 ' = キー
Call Command2_Click(0)
Case 43 ' + キー
Call Command2_Click(1)
Case 45 ' - キー
Call Command2_Click(2)
Case 42 ' * キー
Call Command2_Click(3)
Case 47 '/ キー
Call Command2_Click(4)
Case 8 ' BackSpace
'カーソル位置から一文字前の数字を削除する処理
Case 13 'Enter キー
Call Command3_Click
End Select
KeyAscii = 0
End Sub
カーソルの位置が TextBox に表示されますので数字の挿入処理も可能です
No.4
- 回答日時:
補足と言うか余談と言うか…
KeyPressでは「文字コード」が取得できますが、KeyDown等では
「キーコード」が取得できます。
KeyDownで処理する場合、テンキーの数字の「キーコード」と、
そうでない(アルファベットの上の横並びの)数字の「キーコード」は、
違いますので、注意が必要です(両方に対応する必要がある)。
同様に、大きいEnterキーと、テンキー部の小さいEnterキーでは
キーコードが違いますし、「+」なども違います
(「+」の場合は更に、「;」のキーコードとKeyDownの引数「Shift」とを
絡めて判定する必要がある)。
なお、大体のキーコードは、ヘルプ(MSDN)の「キー コード定数」に
載っていますが、「;」のキーコード等、一部は載っていません。
これらについては、簡単な(キーコードを表示するだけとかの)プログラムを
作成して、実際に確認すればいいと思います。
…でもまぁ面倒なので、KeyPressで判定できる文字は全てKeyPressで
処理した方が、楽でしょうね。
No.2
- 回答日時:
フォームのKeyPreviewをTrueにして、フォームのKeyDownで処理する場合。
>コマンドボタンからの入力は出来ているのですが
各コマンドボタンからの処理で
Private Sub keyPlus_Click()
MsgBox "+"
End Sub
Private Sub keyMinus_Click()
MsgBox "-"
End Sub
みたいなのがあるだろうから
Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case Chr(KeyAscii)
Case "+": keyPlus_Click
Case "-": keyMinus_Click
End Select
End Sub
で処理する。
deleteキーなどはKeyPressでは捕まえられないので、必要なら
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyDelete: MsgBox "delete"
End Select
End Sub
とかで処理する。
この回答へのお礼
お礼日時:2008/07/05 19:16
回答ありがとうございます。
KeyPressでは制限があるのですね。すべてKeyPressで作ろうとしていたので、KeyDownも使用してみます。
No.1
- 回答日時:
ボタンのキャプションプロパティで設定する文字列を
&+ といった具合にすれば そのボタンのClickイベントが ALTキーと+キーを押した場合に実行されます
この場合 +と _ がボタンに表示されます
別の手段としては Formの KeyPreviewプロパティをTrueにして コントロールより先に Formでキー入力を処理させます
FormのKeyDownイベントなどで
if (( Shift = 0 ) and (KeyCode = vbKeyAdd)) or _
((Shift and vbShiftMask ) And ( KeyCOde = 187 ) ) then
' + ボタンが押された場合の処理
end if
といった具合に処理を記述しましょう
vbKeyAddはテンキーの『+』です
KeyCode=187はメインキーボードの『れ』のキーのコードです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual Basic 6.0 コンボボック...
-
キーバッファについての質問
-
一定時間操作されないと自動で...
-
DirectXのDIK発進について
-
Access データ表示 完了時のイ...
-
セックスレスの既婚女性は自慰...
-
CloseとDisposeの違い
-
エクセルで、日付を入力すると...
-
エクセルVBAで、MsgBox やInput...
-
メルカリのメルカードで買い物...
-
「ご処理進めて頂きますようお...
-
VBAでCOPYを繰り返すと、処理が...
-
PDFフォームに本日の日付を自動...
-
マウスイベントが動かない
-
オブジェクト名をVBAで指定...
-
「PC Helpsoft Driver Updated...
-
UPS警告音を止めたい
-
生活保護受給者は性欲をどんな...
-
お家デートをしててハグを長い...
-
ゲームパットN52Teの設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
特定のキーを押すまでループさ...
-
KEYPREVIEW=TRUEについて。意味...
-
WPFでの時刻入力コントロールに...
-
Visual Basic 6.0 コンボボック...
-
タブキー押下時のイベントをひ...
-
(VBA)チェックボックスのclick...
-
コンボボックスにキー入力をさ...
-
EXCEL VBA でIEを制御して、INP...
-
VB.NETのDropDownListをReadOnl...
-
VB.NETでフォームがない...
-
NULLで検索を行ったときは全件...
-
キーバッファについての質問
-
フォーカスについてお教えください
-
Excel VBA マクロ実行中のみテンキ...
-
コントロールキーが押されたキ...
-
vba set Focus
-
テキストボックスの入力文字を1...
-
一定時間操作されないと自動で...
-
キーイベントを擬似的に発生さ...
おすすめ情報