イベントの使い方 [ExcelのVBA]
イベントの使い方
イベントとは「コマンドボタンをクリック」や「テキストボックスの文字列が変更」した時などに発生するプロシージャです。そのプロシージャ内にイベントが発生した際のコードを記述してプログラムを動作させます。
イベントの追加方法は「イベントの追加方法」をご覧ください。
Wikipediaで補足:イベント
各コントロールの共通イベント
各コントロールの共通イベントの解説です。共通といってもここで紹介する全てのイベントが各コントロールにあるわけではなく、コントロールによってはイベントが存在しない場合があります。
Click
コントロールがクリックされた時にイベントが発生します。
[コード例 - コマンドボタン]
Private Sub CommandButton1_Click() Debug.Print "クリックされました。" End Sub
DblClick
コントロールがダブルクリックされた時にイベントが発生します。
[コード例 - コマンドボタン]
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "ダブルクリックされました。" End Sub
引数 Cancel
TrueにするとDblClickイベントが取り消されます。(デフォルトはFalse)
※通常使用では引数の「Cancel」は使用しません。
TrueにするとDblClickイベントが取り消されます。(デフォルトはFalse)
※通常使用では引数の「Cancel」は使用しません。
Change
コントロールの値が変更された時にイベントが発生します。
[コード例 - テキストボックス]
Private Sub TextBox1_Change() Debug.Print "テキストボックスが編集されました。" End Sub
KeyDown
コントロール上でなんらかのキーが押された時にイベントが発生します。
[コード例 - テキストボックス]
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Dim Shift_Str As String
  Dim Other_Str As String
  ' Shiftキーの状態
  If Shift = 1 Then
    Shift_Str = "※Shift = オン"
  Else
    Shift_Str = "※Shift = オフ"
  End If
  ' 押されたキーが0-9ならば
  If (KeyCode.Value >= 48) And (KeyCode.Value <= 57) Then
    Debug.Print Chr(KeyCode.Value) & _
                "(KeyCode=" & (KeyCode.Value) & ")が押されました。" & _
                Shift_Str
    Exit Sub
  End If
  ' 押されたキーがA-Zならば
  If (KeyCode.Value >= 65) And (KeyCode.Value <= 90) Then
    Debug.Print Chr(KeyCode.Value) & _
                "(KeyCode=" & (KeyCode.Value) & ")が押されました。" & _
                Shift_Str
    Exit Sub
  End If
  ' 押されたキーが0-9(テンキー)ならば
  If (KeyCode.Value >= 96) And (KeyCode.Value <= 105) Then
    Debug.Print Chr(KeyCode.Value - 48) & _
                "(KeyCode=" & (KeyCode.Value) & ")が押されました。" & _
                Shift_Str
    Exit Sub
  End If
  ' 押されたキーがF1-F16ならば
  If (KeyCode.Value >= 112) And (KeyCode.Value <= 127) Then
    Debug.Print "F" & CStr(KeyCode.Value - 111) & _
                "(KeyCode=" & (KeyCode.Value) & ")が押されました。" & _
                Shift_Str
    Exit Sub
  End If
  ' その他のキー
  Select Case KeyCode.Value
    Case vbKeyBack: Other_Str = "BackSpace"
    Case vbKeyTab: Other_Str = "Tab"
    Case vbKeyClear: Other_Str = "Clear"
    Case vbKeyReturn: Other_Str = "Enter"
    Case vbKeyShift: Other_Str = "Shift"
    Case vbKeyControl: Other_Str = "Ctrl"
    Case vbKeyMenu: Other_Str = "Alt"
    Case vbKeyPause: Other_Str = "Pause"
    Case vbKeyCapital: Other_Str = "CapsLock"
    Case vbKeyEscape: Other_Str = "Esc"
    Case vbKeySpace: Other_Str = "Space"
    Case vbKeyPageUp: Other_Str = "PageUp"
    Case vbKeyPageDown: Other_Str = "PageDown"
    Case vbKeyEnd: Other_Str = "End"
    Case vbKeyHome: Other_Str = "Home"
    Case vbKeyLeft: Other_Str = "←"
    Case vbKeyUp: Other_Str = "↑"
    Case vbKeyRight: Other_Str = "→"
    Case vbKeyDown: Other_Str = "↓"
    Case vbKeySelect: Other_Str = "Select"
    Case vbKeyPrint: Other_Str = "PrintScreen"
    Case vbKeyExecute: Other_Str = "Execute"
    Case vbKeySnapshot: Other_Str = "Snapshot"
    Case vbKeyInsert: Other_Str = "Ins"
    Case vbKeyDelete: Other_Str = "Del"
    Case vbKeyHelp: Other_Str = "Help"
    Case vbKeyNumlock: Other_Str = "NumLock"
    Case vbKeyMultiply: Other_Str = "*"
    Case vbKeyAdd: Other_Str = "+"
    Case vbKeySeparator: Other_Str = "Enter"
    Case vbKeySubtract: Other_Str = "-"
    Case vbKeyDecimal: Other_Str = "."
    Case vbKeyDivide: Other_Str = "/"
    ' 以下のコードは環境によって異なる
    Case 186: Other_Str = ":*"
    Case 187: Other_Str = ";+"
    Case 188: Other_Str = ",<"
    Case 189: Other_Str = "- _"
    Case 190: Other_Str = ".>"
    Case 191: Other_Str = "/ ?"
    Case 192: Other_Str = "@`"
    Case 219: Other_Str = "[ {"
    Case 220: Other_Str = "\ |"
    Case 221: Other_Str = "] }"
    Case 222: Other_Str = "^~"
    Case 226: Other_Str = "\_"
    ' 不明
    Case Else: Other_Str = "不明"
  End Select
  Debug.Print Other_Str & _
              "(KeyCode=" & (KeyCode.Value) & ")が押されました。" & _
              Shift_Str
End Sub
[結果]
 
KeyPress
コントロール上で英数字記号キーが押された時にイベントが発生します。
[コード例 - テキストボックス]
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  Dim Shift_Str As String
  
  ' 押されたキーが0-9ならば
  If (KeyAscii.Value >= 48) And (KeyAscii.Value <= 57) Then
    Debug.Print Chr(KeyAscii.Value) & _
                "(KeyAscii=" & (KeyAscii.Value) & ")が押されました。" & _
                Shift_Str
    Exit Sub
  End If
  ' 押されたキーがA-Zならば
  If (KeyAscii.Value >= 65) And (KeyAscii.Value <= 90) Then
    Debug.Print Chr(KeyAscii.Value) & _
                "(KeyAscii=" & (KeyAscii.Value) & ")が押されました。"
    Exit Sub
  End If
  ' 押されたキーがa-zならば
  If (KeyAscii.Value >= 97) And (KeyAscii.Value <= 122) Then
    Debug.Print LCase(Chr(KeyAscii.Value - 32)) & _
                "(KeyAscii=" & (KeyAscii.Value) & ")が押されました。"
    Exit Sub
  End If
    
  ' 記号
  Debug.Print "記号" & _
                "(KeyAscii=" & (KeyAscii.Value) & ")が押されました。"
End Sub
引数 KeyAscii
アスキーコード値。詳細はWikipediaへ
アスキーコード値。詳細はWikipediaへ
[結果]
 
KeyUp
コントロール上でなんらかのキーが離された時にイベントが発生します。
[コード例 - テキストボックス]
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ' 引数の扱いはTextBox1_KeyDownと同様 End Sub
MouseDown
コントロール上でマウスのボタンが押された時にイベントが発生します。
[コード例 - ユーザーフォーム]
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  
  Dim Shift_Str As String
  ' Shiftキーの状態
  If Shift = 1 Then
    Shift_Str = "※Shift = オン"
  Else
    Shift_Str = "※Shift = オフ"
  End If
  
  If Button = vbKeyLButton Then
    Debug.Print "マウスの左ボタンが押されました。" & _
                Shift_Str
  End If
  
  If Button = vbKeyRButton Then
    Debug.Print "マウスの右ボタンが押されました。" & _
                Shift_Str
  End If
  
  If Button = vbKeyMButton Then
    Debug.Print "マウスの中央ボタンが押されました。" & _
                Shift_Str
  End If
     
  ' 座標の表示
  Debug.Print "座標X = " & CStr(X) & " 座標Y = " & CStr(Y)
   
End Sub
引数 Button
マウスのボタン値。詳細はマイクロソフト公式サイトへ
引数 Shift
Shiftキーがオンの時は1、オフの場合は0
引数 X
マウスがあった場所の座標値X(横軸)
引数 Y
マウスがあった場所の座標値Y(縦軸)
マウスのボタン値。詳細はマイクロソフト公式サイトへ
引数 Shift
Shiftキーがオンの時は1、オフの場合は0
引数 X
マウスがあった場所の座標値X(横軸)
引数 Y
マウスがあった場所の座標値Y(縦軸)
[結果]
 
MouseMove
コントロール上でマウスが移動した時にイベントが発生します。
[コード例 - ユーザーフォーム]
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ' 引数の扱いはUserForm_MouseDownと同様 End Sub
MouseUp
コントロール上でマウスのボタンが離された時にイベントが発生します。
[コード例 - ユーザーフォーム]
Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ' 引数の扱いはUserForm_MouseDownと同様 End Sub
Visual Basicのコントロール
| 共通操作 プロパティの使い方 イベントの使い方 | 
|  | ラベル | 
|  | テキストボックス | 
|  | コンボボックス | 
|  | リストボックス | 
|  | チェックボックス | 
|  | オプションボタン | 
|  | トグルボタン | 
|  | フレーム | 
|  | コマンドボタン | 
|  | タブストリップ | 
|  | マルチページ | 
|  | スクロールバー | 
|  | スピンボタン | 
|  | イメージ | 
| ユーザーフォーム | 
エクセル講座のクイックリンク
スポンサーリンク
      
      
      
      
      
    
関連記事
| 前の記事: | プロパティの使い方 [ExcelのVBA] | 
| 次の記事: | ラベルの使い方 [ExcelのVBA] | 
公開日:2015年06月27日 最終更新日:2015年07月06日
記事NO:01076 
プチモンテ ※この記事を書いた人
|  | |
|  | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ | 
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |

 
        



 
  
 


