【VBA入門】入力規則を設定して不正な値をブロックする方法|Validationプロパティの使い方

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テンプレートやマクロ付きブックを作成する際には、ぜひ取り入れてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次