Excel VBAでは、セルに入力される値に対して制限を設ける「入力規制(データバリデーション)」機能が用意されています。その際、入力ミスに対してどのようにユーザーに知らせるかを、3種類のエラースタイルで制御できます。
この記事では、入力規則のエラースタイル(停止、警告、情報)を設定・変更する方法について、具体的なコードとともに解説いたします。
目次
入力規制のエラースタイルとは
入力規制時に指定できる AlertStyle
は、次の3種類から選べます。
AlertStyle | 意味 | 入力の可否 | ダイアログのボタン |
---|---|---|---|
xlValidAlertStop | 停止(デフォルト) | 不可 | OKのみ(必ず再入力) |
xlValidAlertWarning | 警告 | 可 | はい・いいえ・キャンセル |
xlValidAlertInformation | 情報 | 可 | OKのみ(そのまま続行) |
警告メッセージ付きのリスト入力規制を設定する
以下のコードでは、セル A2 に対して「リスト C2:C6 の値のみを入力可能」とし、エラースタイルを xlValidAlertWarning
に設定しています。
With Range("A2").Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertWarning, _
Formula1:="=C2:C6"
.ErrorTitle = "リスト外の値を入力"
.ErrorMessage = "リスト外の値を入力しようとしています。このまま入力を続ける場合は「はい」を押してください。"
End With
この設定では、リスト外の値を入力しても、「はい」「いいえ」「キャンセル」の選択肢を表示する警告ダイアログが表示され、入力自体は可能です。
エラースタイルを後から「情報」スタイルに変更する
一度設定した入力規則の AlertStyle
を後から変更することも可能です。以下のコードでは、警告スタイルを情報スタイルに変更しています。
With Range("A2").Validation
.Modify AlertStyle:=xlValidAlertInformation
.ErrorMessage = "リスト外の値を入力しました"
End With
xlValidAlertInformation
に変更することで、ダイアログは「OK」ボタンのみとなり、ユーザーへの通知は行われるものの、入力はそのまま受け付けられます。
注意点
.Modify
メソッドは、Validation
オブジェクトが既に設定済みである必要があります。AlertStyle
を変更するだけでなく、ErrorMessage
なども必要に応じて書き換えましょう。- ユーザーの操作性や誤入力リスクを考慮して、適切なスタイルを選ぶことが重要です。
まとめ
VBAを使った入力規則設定において、エラースタイルを活用することで、入力ミスに対する柔軟な対応が可能になります。
スタイル | 処理 | メリット |
---|---|---|
停止(Stop) | 入力を拒否 | 厳密な制御に最適 |
警告(Warning) | 続行確認可能 | 柔軟に対応 |
情報(Information) | 通知のみ | ユーザーに気付かせる目的で使用 |
ユーザーの入力行動を適切に誘導するために、場面に応じたスタイル設定を行いましょう。