キーが何回押されたかその2

解決


初心者  2008-11-25 16:24:22  No: 140888  IP: 192.*.*.*

前回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と定義しているのですがうまくいきません。各ホームページを細かくみたのですが、明確なのがなく、教えていただけませんでしょうか?すみません

編集 削除
matsu  2008-11-25 18:08:21  No: 140889  IP: 192.*.*.*

>【shift】+Aを1回押したらAが1減算したいのですが  vbkeya+vbkeyshiftと定義しているのですがうまくいきません。各ホームページを細かくみたのですが、明確なのがなく、教えていただけませんでしょうか?すみません

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Shiftの値で判断できます。
KeyDownのヘルプに詳細が載っていますので、確認してみてください。

編集 削除
11月  2008-11-25 18:42:51  No: 140890  IP: 192.*.*.*

【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

編集 削除
GOD  2008-11-25 22:24:14  No: 140891  IP: 192.*.*.*

> 【shift】を押した時は       If Shift = 1 Then  を想像出来るかと
>
Shiftの押下状態表すビット位置は0なので式的にはあっていますが、想像でやったらダメです。
引数 Shift には Shift, Ctrl, Alt のキー状態が入ってますのでmatsu さんの言うようにヘルプを参照して下さい。

編集 削除
初心者  2008-11-26 09:22:29  No: 140892  IP: 192.*.*.*

matsuさん、11月さん、GODさん大変ありがとうございました。自分でできる限り、いろいろな方法で文献をかなり調べたのですが、どうしてもわからず相談させて頂ました。どうぞご理解下さい。matsuさんご指導ありがとうございます。11月さん、プロシージャー大変たすかります。GODさん「想像」でやっていたので指摘ありがとうございました。私はVBを勉強してからまで何日かなのですが、このプロシージャーにより何十名もの従業員の手間が楽になります。周りに理解できる人がいなかったので大変助かりました。またVBがだんだん楽しくなってきました。みなさんありがとうございました。

編集 削除