Excel VBA | 中級・上級 VBA 総合セット(100問)

VBA
スポンサーリンク

VBA イベント処理 練習問題(10問)+ 解答解説

Excel VBA の「イベント処理」は、ユーザーの操作やブックの状態変化に応じて自動的にコードを実行する仕組みです。
ここでは 代表的なイベント処理の練習問題 10問 を用意し、模範コードと解説を添えています。


Q1. Worksheet_Change イベントで、B列に入力された値が 100 未満なら赤字にせよ

解答例

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Columns("B")) Is Nothing Then
        If IsNumeric(Target.Value) And Target.Value < 100 Then
            Target.Font.Color = vbRed
        End If
    End If
End Sub
VB

解説:
Worksheet_Change はセルの内容が変更されたときに発火。Intersect で対象列を限定。


Q2. Workbook_Open イベントで、特定シートを自動的に表示せよ

解答例

Private Sub Workbook_Open()
    ThisWorkbook.Sheets("Report").Activate
End Sub
VB

解説:
Workbook_Open はブックを開いた瞬間に実行される。起動時に特定シートを表示する用途に便利。


Q3. Worksheet_BeforeDoubleClick イベントで、セルをダブルクリックしたらメッセージを表示せよ

解答例

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox "セル " & Target.Address & " をダブルクリックしました"
    Cancel = True   '既定の編集モードをキャンセル
End Sub
VB

解説:
ダブルクリック時に発火。Cancel = True で通常の編集モードを抑止できる。


Q4. Worksheet_BeforeRightClick イベントで、右クリックしたら独自メッセージを表示せよ

解答例

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox "右クリックしました: " & Target.Address
    Cancel = True   '既定のコンテキストメニューをキャンセル
End Sub
VB

解説:
右クリックイベントを捕捉。独自のメニューや処理を組み込める。


Q5. Worksheet_SelectionChange イベントで、選択セルが変わるたびにアドレスを表示せよ

解答例

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Debug.Print "選択セル: " & Target.Address
End Sub
VB

解説:
セル選択が変わるたびに発火。選択範囲の監視や入力補助に使える。


Q6. Workbook_BeforeClose イベントで、保存確認メッセージを表示せよ

解答例

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If MsgBox("保存しますか?", vbYesNo) = vbYes Then
        Me.Save
    End If
End Sub
VB

解説:
ブックを閉じる直前に発火。保存確認や処理の強制実行に利用できる。


Q7. Worksheet_Change イベントで、入力値が「@」を含まなければエラーメッセージを出せ(メールアドレスチェック)

解答例

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Columns("C")) Is Nothing Then
        If Target.Value <> "" And InStr(Target.Value, "@") = 0 Then
            MsgBox "メールアドレス形式が不正です"
        End If
    End If
End Sub
VB

解説:
入力チェックの典型例。文字列判定に InStr を使用。


Q8. Workbook_SheetChange イベントで、全シートの変更を監視せよ

解答例

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Debug.Print "シート " & Sh.Name & " の " & Target.Address & " が変更されました"
End Sub
VB

解説:
Workbook_SheetChange は全シートの変更を監視できる。監査ログ用途に便利。


Q9. Worksheet_Activate イベントで、シートを開いたら背景色を変更せよ

解答例

Private Sub Worksheet_Activate()
    Me.Cells.Interior.Color = RGB(240, 240, 240)
End Sub
VB

解説:
シートがアクティブになった瞬間に発火。視覚的に「今どのシートか」を強調できる。


Q10. Workbook_NewSheet イベントで、新しいシートが追加されたらメッセージを表示せよ

解答例

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    MsgBox "新しいシートが追加されました: " & Sh.Name
End Sub
VB

解説:
シート追加を検知できる。自動初期化やテンプレート適用に応用可能。


✅ 総まとめ

  • Worksheet 系イベント → セル操作や選択・クリックを監視
  • Workbook 系イベント → ブックの開閉・シート追加などを監視
  • 実務用途 → 入力チェック、保存確認、監査ログ、UIカスタマイズ
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました