前回keyDOWNを教えていただき、
Dim A_count As Integer
Dim B_count As Integer
Private Sub Form()
A_count = 0
B_count = 0
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 0 Then
Select Case KeyCode
Case vbKeyA
A_count = A_count + 1
Label_A.Caption = "Aの回数 : " & A_count
Case vbKeyB
B_count = B_count + 1
Label_B.Caption = "Bの回数 : " & B_count
End Select
End If
End Sub
を教えて頂き大変助かっているのですが【shift】+Aを1回押したらAが1減算したいのですが vbkeya+vbkeyshiftと定義しているのですがうまくいきません。各ホームページを細かくみたのですが、明確なのがなく、教えていただけませんでしょうか?すみません
>【shift】+Aを1回押したらAが1減算したいのですが vbkeya+vbkeyshiftと定義しているのですがうまくいきません。各ホームページを細かくみたのですが、明確なのがなく、教えていただけませんでしょうか?すみません
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Shiftの値で判断できます。
KeyDownのヘルプに詳細が載っていますので、確認してみてください。
【shift】を押していない時が If Shift = 0 Then なのですから
【shift】を押した時は If Shift = 1 Then を想像出来るかと。
コンピューターは2進数(0と1)を使う事からもゼロに対するのはイチ。
電気のスイッチ(パソコンの電源スイッチ)にも 0/1 と言う表示が
あったりしますね。 0 は切り(OFF)で1は入り(ON)
Dim A_count As Integer
Dim B_count As Integer
Private Sub Form()
A_count = 0
B_count = 0
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 0 Then
Select Case KeyCode
Case vbKeyA
A_count = A_count + 1
Label_A.Caption = "Aの回数 : " & A_count
Case vbKeyB
B_count = B_count + 1
Label_B.Caption = "Bの回数 : " & B_count
End Select
End If
'### ここから追加
If Shift = 1 Then
Select Case KeyCode
Case vbKeyA
A_count = A_count - 1
Label_A.Caption = "Aの回数 : " & A_count
End Select
End If
'### ここまで
End Sub
> 【shift】を押した時は If Shift = 1 Then を想像出来るかと
>
Shiftの押下状態表すビット位置は0なので式的にはあっていますが、想像でやったらダメです。
引数 Shift には Shift, Ctrl, Alt のキー状態が入ってますのでmatsu さんの言うようにヘルプを参照して下さい。
matsuさん、11月さん、GODさん大変ありがとうございました。自分でできる限り、いろいろな方法で文献をかなり調べたのですが、どうしてもわからず相談させて頂ました。どうぞご理解下さい。matsuさんご指導ありがとうございます。11月さん、プロシージャー大変たすかります。GODさん「想像」でやっていたので指摘ありがとうございました。私はVBを勉強してからまで何日かなのですが、このプロシージャーにより何十名もの従業員の手間が楽になります。周りに理解できる人がいなかったので大変助かりました。またVBがだんだん楽しくなってきました。みなさんありがとうございました。
編集 削除