

Visual Basic について質問です。
「KeyDown」「KeyUp」で、「キーを押した時、離した時に…」というプログラムが書けますよね。
Private Sub Form1_KeyDown(…省略) Handles Me.KeyDown
If e.KeyCode = Keys.A Then
…(1)
ElseIf e.KeyCode = Keys.B Then
…(2)
ElseIf e.KeyCode = Keys.D0 Then
…(3)
End If
End Sub
こんな感じで、
「A」キーが押されたら処理(1)を実行
「B」キーが押されたら処理(2)を実行
「0」キーが押されたら処理(3)を実行
という風なプログラムを作っているのですが、
右の方にある「@」キーや、
カギカッコのキーや、
ひらがなの「れ」「け」「む」「ね」「る」「め」「ろ」のキーや、
ENTERキーの指定方法が分かりません。
このキーが使えないと、プログラムとして成り立たなくなってしまうので、非常に困っています。
↓このページに、いろいろなキーの指定方法が書かれていましたが、
ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.keys(VS.80).aspx
どれがどのキーなのか分かりませんでした。
適当にそれらしい物でやってみましたが、どのキーを押しても反応無しでした。
「Enter」キーは、「Enter」で指定するように書かれていましたが、「Enter」キーを押しても無反応でした。
方法を教えていただければ幸いです。
No.3ベストアンサー
- 回答日時:
No.2です。
>とにかく「れ(;,+)」のキーが押された時、離された時、を指定できれば良いのですが、このような指定をすることはやはり無理なのでしょうか…
ボタン操作をラベルへ表示する為、FormにLabelを2つ配置して下さい。
以下のプログラムをコピー&ペーストして下さい。
↓↓↓↓↓↓↓↓↓↓
'ボタンが押された瞬間のイベントをラベルへ表示する
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 13
Me.Label1.Caption = "Form_KeyDown" & "[Enter]が押されたときの処理"
Case 187
Me.Label1.Caption = "Form_KeyDown" & "[れ]が押されたときの処理"
Case 192
Me.Label1.Caption = "Form_KeyDown" & "[@]が押されたときの処理"
Case Else
Me.Label1.Caption = "Form_KeyDown" & " Case " & KeyCode & " を追加する。"
End Select
End Sub
'ボタンが離れた瞬間のイベントをラベルへ表示する
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 13
Me.Label2.Caption = "Form_KeyUp" & "[Enter]が押されたときの処理"
Case 187
Me.Label2.Caption = "Form_KeyUp" & "[れ]が押されたときの処理"
Case 192
Me.Label2.Caption = "Form_KeyUp" & "[@]が押されたときの処理"
Case Else
Me.Label2.Caption = "Form_KeyUp" & " Case " & KeyCode & " を追加する。"
End Select
End Sub
↑↑↑↑↑↑↑↑↑↑
※「KeyPress」は、ボタンを長押ししている間に発生するイベントです。
elseで表示されるKeyCodeをcaseで追加すればボタンを押した時/離した時のイベント処理が可能だと思います。
但し、「Shift+れ=+」等の組合せが必要な操作は、KeyPressを使用しないと処理が困難だと思います。
ご丁寧にありがとうございます。
おかげ様で、少々予定とは異なりましたがプログラムを完成させることが出来ました。
感謝しています(^-^)
No.2
- 回答日時:
WindowsXP VB6.0 です。
「KeyDown」「KeyUp」では、[Shift + れ(;) = +]の様なイベントは取得出来ないと思いますので、「KeyPress」をご使用されてはいかがでしょうか?
【ご参考】
Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKey1
MsgBox "[1]が押されたときの処理"
Case vbKey2
MsgBox "[2]が押されたときの処理"
Case vbKeyA
MsgBox "[Shift + A]が押されたときの処理"
Case 43
MsgBox "[Shift + れ(;) = +]が押されたときの処理"
Case 59
MsgBox "[れ(;)]が押されたときの処理"
Case 64
MsgBox "[@]が押されたときの処理"
Case 97
MsgBox "[a]が押されたときの処理"
Case Else
MsgBox "Case " & KeyAscii & " を追加する。"
End Select
End Sub
見当違いかもしれませんが、ご参考になれば幸いです。
ご回答ありがとうございます。
KeyPressという物があるのですね。
しかし、私が作ろうと思っているプログラムは、例えば「れ」「+」「;」を区別する必要がありません。
とにかく「れ(;,+)」のキーが押された時、離された時、を指定できれば良いのですが、このような指定をすることはやはり無理なのでしょうか…
「KeyPress」は、数字で指定できるのがとても便利そうですが、キーを押した時の処理と離した時の処理を区別出来ないところが欠点ですね。
質問者の分際で偉そうな事を書いてしまいましたが、ご回答ありがとうございました!
どうにかしてKeyPressを使えないか、いろいろ試してみます。
No.1
- 回答日時:
こんばんわ、Enterなら
e.KeyCode = keys.enter
で判断できるはずですが。
formモジュールでKeyDownイベント
についてよく理解できませんが。
ひらがなは別にして
MsgBox(e.KeyCode)
で値が戻るはずなので
http://hp.vector.co.jp/authors/VA014436/prg_memo …
で返却値からキーステータスを
判断してみては如何でしょうか。
ご回答ありがとうございます。
実は、私は今年5月からVisual Basicを始めたばかりの超初心者です。
これを先に書いておくべきでした。
さっそく、教えていただいたMsgBox(e.KeyCode)を試してみます。
参考URLも貼っていただき、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba GetAsyncKeyState関数について 1 2023/08/24 12:08
- Windows 10 エクスプローラで希望の場所が表示できない 2 2023/06/29 15:19
- マウス・キーボード テンキーの設定がおかしくなっています。 5 2023/08/09 15:35
- その他(プログラミング・Web制作) VSCodeで上書きモードにならない 1 2022/10/26 12:10
- マウス・キーボード キーボードのキー入力の際キーの反応が悪く困っています。 DとYキーなのですがDはゲームで押し潰してお 2 2023/04/11 22:05
- マウス・キーボード キーボードに水を溢して故障させてしまいました。 4 2022/04/05 23:20
- その他(パソコン・周辺機器) PCの操作中に画面がフリーズしましたマウスを動かしても反応しないし「Ctrl」キーと「Alt」キーと 2 2022/04/17 10:09
- iOS これは日本語入力の大発明ですか? 7 2022/12/21 07:17
- マウス・キーボード キーボードのCaps Lockキーと変換キーの挙動がおかしくなりました。 4 2022/09/04 22:44
- マウス・キーボード 不良表示キー(キーボード) 3 2022/04/27 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
メッセージボックスのボタン名変更
-
【C#】 あるイベントから別イ...
-
サスペンド(休止やスタンバイ...
-
スロットゲームのプログラミング
-
for文実行中を途中で中断するに...
-
SendMessage中のメッセージ・ル...
-
CreateCompatibleDCを初期化時...
-
VBSで応答不要のメッセージボッ...
-
VB Loopを一時停止し再開あるい...
-
マルチスレッドを実現したい
-
c#でボタンのアクションが終わ...
-
VCでウエイトをミリ秒でかけ...
-
WEB上にボタンが押せない
-
MFCのメニューバーのイベント取得
-
ACCESS側からEXCELの書式を設定...
-
VBA、UserFormを前面に出力して...
-
Macターミナルで実行中のプログ...
-
C言語で、メモリを解放しないで...
-
SendMessageが失敗するときがある
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
ACCESS側からEXCELの書式を設定...
-
メッセージボックスのボタン名変更
-
VBSで応答不要のメッセージボッ...
-
VBA kernel32 の意味
-
Excel VBA で処理中断(DoEvents...
-
VBA、UserFormを前面に出力して...
-
Application.ScreenUpdating=Fa...
-
MFCのワーカースレッドとUIスレ...
-
ASP.NETでのメッセージ画面を出...
-
「キャンセル」ボタン付きの処...
-
シャットダウン時のExcel強制終...
-
【C#】 あるイベントから別イ...
-
ボタンが押された事を検知する...
-
PostMessageの連続送信
-
VBA メッセージボックスを自動...
-
エクセルVBAでクリップボード内...
-
VCでウエイトをミリ秒でかけ...
-
ループを使わずに、特定時間に...
-
VB6 コマンドボタン クリック...
おすすめ情報