Excelでは、ユーザーが**特定の形式や値のみを入力できるように制限する「入力規則」**という機能があります。
この機能をVBAから制御することで、より効率的かつ自動化された入力チェックが可能となります。
この記事では、VBAでセルに入力規則(バリデーション)を設定する方法をご紹介いたします。
目次
入力規則(Validation)とは?
入力規則とは、セルに対して「どのような値しか入力を許可しないか」を指定するExcelの機能です。
たとえば「未来の日付しか入力できない」「整数だけ入力可能」などの制限が可能です。
VBAで入力規則を設定する方法
以下のコードでは、列B全体に対して「2025年1月1日以降の日付のみ入力可能」とする入力規則を設定しています。
Sub 入力規則を設定する()
With Worksheets("シート1").Range("B:B")
' 既存の入力規則を削除
.Validation.Delete
' 新しい入力規則を設定(2025/1/1以降の日付のみ許可)
.Validation.Add _
Type:=xlValidateDate, _
Operator:=xlGreaterEqual, _
Formula1:="2025/1/1"
End With
End Sub
入力規則の種類(Type)
定数名 | 内容 |
---|---|
xlValidateCustom | 数式で定義 |
xlValidateList | リストから選択 |
xlValidateDate | 日付制限 |
xlValidateTime | 時間制限 |
xlValidateTextLength | 文字数制限 |
xlValidateDecimal | 小数値の制限 |
xlValidateWholeNumber | 整数値の制限 |
xlValidateInputOnly | 入力規則は設けないがヒント表示のみ |
演算子の種類(Operator)
定数名 | 意味 |
---|---|
xlBetween | 指定範囲内 |
xlNotBetween | 指定範囲外 |
xlEqual | 等しい |
xlNotEqual | 等しくない |
xlGreater | より大きい |
xlGreaterEqual | 以上 |
xlLess | より小さい |
xlLessEqual | 以下 |
入力規則を削除するには?
既存の入力規則を削除するには .Validation.Delete
を使います。
Range("B:B").Validation.Delete
使用例:文字数制限(10文字以内)
With Range("C2:C100")
.Validation.Delete
.Validation.Add _
Type:=xlValidateTextLength, _
Operator:=xlLessEqual, _
Formula1:="10"
End With
まとめ
項目 | 内容 |
---|---|
設定方法 | .Validation.Add を使用 |
削除方法 | .Validation.Delete |
使用用途例 | 日付制限、数値制限、文字数制限、リスト制限など |
注意点 | 設定前に .Delete で規則を初期化すること |
VBAで入力規則を柔軟に設定することで、ユーザーの入力ミス防止やデータ整合性の維持に大きく貢献できます。
業務用Excelテンプレートやマクロ付きブックを作成する際には、ぜひ取り入れてみてください。