
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
とかで処理する。
回答ありがとうございます。
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) vba キータッチまたはマウスクリックの確認 1 2023/08/23 19:02
- ノートパソコン ノートパソコン キーボードが反応しない 突然、ノートパソコンのキーボードが反応しなくなりました。 外 5 2022/08/05 07:15
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- Mac OS Macで Microsoft Remote Desktop を使うとキーボードの配列が変わってしまう 1 2022/08/08 17:27
- タブレット Kindl fire7を購入しましたが、ひらがな入力をしたいのですが、どこから変更できるのでしょうか 3 2022/09/04 20:19
- Word(ワード) Windows11キーボードの調子が悪いので治し方を教えてください。 【症状】 1つ目 キーボードの 5 2022/07/03 14:51
- その他(パソコン・周辺機器) 呪われた様な.......様々な不具合について 2 2022/08/26 15:52
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- C言語・C++・C# Microsoft Visual Studio Community 2019 タブキーが入力できない 1 2022/04/30 06:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(VBA)チェックボックスのclick...
-
テキストボックスの入力文字を1...
-
KEYPREVIEW=TRUEについて。意味...
-
【VB】タブ切り替え時のイベント
-
WPFでの時刻入力コントロールに...
-
自作ダイアログボックス中のエ...
-
エクセルVBAのテキストボック、...
-
コンボボックス選択後に非アク...
-
Excel VBA マクロ実行中のみテンキ...
-
ListViewで、PageDownキーイベ...
-
タブキー押下時のイベントをひ...
-
イベントハンドラが取得できな...
-
GetKeyStateについて
-
VB.NETでフォームがない...
-
delphi imageコンポでOnKeyイベ...
-
一定時間操作されないと自動で...
-
特定のキーを押すまでループさ...
-
フォーカスについてお教えください
-
コンボボックスにキー入力をさ...
-
コントロールキーが押されたキ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
タブキー押下時のイベントをひ...
-
(VBA)チェックボックスのclick...
-
VB.NETでフォームがない...
-
特定のキーを押すまでループさ...
-
一定時間操作されないと自動で...
-
コンボボックスにキー入力をさ...
-
Visual Basic 6.0 コンボボック...
-
VB.NETのDropDownListをReadOnl...
-
WPFでの時刻入力コントロールに...
-
KEYPREVIEW=TRUEについて。意味...
-
Excel VBA マクロ実行中のみテンキ...
-
フォーカスについてお教えください
-
エクセルVBAのテキストボック、...
-
DirectXのDIK発進について
-
Enterキー入力後の動作について
-
C# WMPメディアの終了検知 その2
-
Delphiでキー入力を投げたい
-
キーイベントを擬似的に発生さ...
-
DephiでのTextボックスでの数値...
おすすめ情報