Excelでアンケートや入力フォームを作成すると、「入力内容に応じてコメントやアドバイスを出したい」という場面がよくあります。
たとえば、
- 点数が低かったら「再確認してください」
- 「未提出」なら「提出をお願いします」
- 「はい/いいえ」の答えによって次のアクションを表示
こうした「入力に応じたメッセージ表示」は、VBAで簡単に実装できます。
今回は、条件に応じてアドバイスやメッセージを自動で返すマクロを紹介します。
入力に応じてアドバイスを表示する基本マクロ
まずは、点数に応じて評価コメントを表示する例から紹介します。
Sub ShowAdvice()
Dim score As Long
' B2セルに点数を入力すると、その内容を取得
score = Range("B2").Value
' 点数に応じてコメントを表示
If score >= 80 Then
MsgBox "よくできました!"
ElseIf score >= 50 Then
MsgBox "まずまずです。復習をおすすめします。"
Else
MsgBox "理解が不十分のようです。もう一度見直しましょう。"
End If
End Sub
このコードでは、B2セルの点数に応じて、3段階のメッセージが表示されます。
- 80点以上 → よくできました!
- 50点以上 → まずまずです
- それ未満 → 見直しましょう
解説
score = Range("B2").Valueでセルの値を取得- 条件に応じた
If ~ ElseIf ~ Elseで分岐 MsgBoxを使ってポップアップでメッセージを表示
非常にシンプルな構成ですが、アンケートやチェックリストのフィードバックに活用できます。
よくあるパターン:文字列に応じたアドバイス
数値だけでなく、「文字列」に対しても同じように使えます。
Sub ShowMessageByInput()
Dim ans As String
ans = Range("C2").Value
If ans = "未提出" Then
MsgBox "早めの提出をお願いします。"
ElseIf ans = "確認中" Then
MsgBox "確認が終わり次第、提出してください。"
ElseIf ans = "提出済" Then
MsgBox "ご対応ありがとうございます。"
Else
MsgBox "入力内容を確認してください。"
End If
End Sub
このコードでは、C2セルの内容が「未提出」「確認中」「提出済」のいずれかに応じてメッセージを切り替えています。
メリットと使いどころ
- 入力に対してその場でフィードバックが出せる
- 使い方によっては“チェックリストの自動ナビゲーション”にも応用できる
- フォーム提出時のミス軽減につながる
実践応用:セル変更と同時に自動表示(Changeイベント)
上記の例では「ボタンを押す」か「マクロを実行」する必要がありましたが、セルに入力しただけで自動メッセージを出すことも可能です。
たとえば次のように、シートのコードに書き込みます。
Private Sub Worksheet_Change(ByVal Target As Range)
' 対象はB2セルだけ
If Target.Address = "$B$2" Then
Dim val As Variant
val = Target.Value
If IsNumeric(val) Then
If val < 50 Then
MsgBox "50点未満です。見直しをおすすめします。"
End If
End If
End If
End Sub
補足
このコードは、「B2セルが変更されたとき」にメッセージを表示する処理です。
Worksheet_Changeは、対象シートの「コード」ウィンドウに直接書く必要があります(標準モジュールではなく)- セルが変更されるたびに条件チェックされます
実装のメリット
- 入力後すぐに反応するので自然なガイドになる
- 繰り返し作業を減らせる
- 自動化感が増して使いやすさが向上する
まとめ
ユーザーの入力内容に応じて、VBAでメッセージを返す機能は、とても実用性が高い仕組みです。
使い方次第で、
- 入力ミスをその場で指摘できる
- 入力後のアドバイスをすぐに表示できる
- フォームやアンケートの使いやすさを向上できる
という効果が期待できます。
「入力内容に応じた反応を返す」この発想は、業務効率を高める第一歩です。
ぜひ、あなたのExcel業務にも取り入れてみてください。
