Excelでは、セルに誤った値が入力されるのを防ぐために、「入力規則(データバリデーション)」機能を使って、値の範囲や種類を制限することができます。
この記事では、VBAを使って規則外の値が入力された際に警告メッセージを表示する方法について、実用的なサンプルコードと併せて詳しくご紹介いたします。
目次
VBAで入力エラーを通知する基本コード
以下のコードは、列「D」に対して「2025年1月1日以降の日付のみ」を入力可能とし、もし条件に合わない値が入力された場合には警告を表示する設定です。
Sub 入力規則に違反したときに警告を出す()
With Worksheets("データ入力").Range("D:D").Validation
' 既存の入力規則を削除
.Delete
' 入力制限:日付(2025年1月1日以降)
.Add _
Type:=xlValidateDate, _
Operator:=xlGreaterEqual, _
Formula1:="2025/1/1"
' エラー時に表示する警告メッセージ
.ErrorTitle = "入力エラー"
.ErrorMessage = "2025年1月1日以降の日付を入力してください。"
.ShowError = True
End With
End Sub
各プロパティの役割
プロパティ名 | 内容 |
---|---|
.Delete | 既存の入力規則を削除 |
.Add | 新しい入力規則の追加 |
Type | 入力値の種類(ここでは日付) |
Operator | 比較演算子(ここでは「以上」) |
Formula1 | 入力の基準値 |
.ErrorTitle | エラーメッセージのタイトル |
.ErrorMessage | エラーメッセージの本文 |
.ShowError | エラーメッセージを表示するかどうか(True で表示) |
使用例:入力規則+警告の活用場面
シナリオ | 入力規則 | 警告メッセージ例 |
---|---|---|
出荷日入力フォーム | 本日以降の日付 | 「本日以降の日付を入力してください」 |
社員番号欄 | 数値4桁のみ | 「4桁の社員番号を入力してください」 |
見積金額入力 | 1〜100万円の範囲 | 「金額は1万円以上、100万円以下で入力」 |
補足:ポップアップでヒントも併用可能
入力規則の .InputMessage
プロパティを使えば、入力前に案内メッセージを表示することもできます。エラーと併用すれば、入力支援としてより親切です。
.InputTitle = "日付の入力"
.InputMessage = "2025年1月1日以降の日付を入力してください。"
まとめ
項目 | 説明 |
---|---|
規則設定 | .Validation.Add を使用し、Type や Operator を指定 |
エラータイトルの表示 | .ErrorTitle で警告ウィンドウのタイトルを設定 |
エラーメッセージの表示 | .ErrorMessage で警告の内容を指定 |
メッセージ表示ON/OFF | .ShowError = True によって表示を有効化 |
入力前のガイド表示 | .InputMessage によってヒント表示も可能 |