イベントの使い方 [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月中旬 ~ | |























