【ExcelVBA・マクロ】入力規則を設定する方法|プルダウン・数値制限を自動化【コピペOK】

入力規則を設定する方法 ExcelVBA

Excelでデータ入力をしていると、次のようなことはありませんか?

  • 入力ミスを防ぎたい
  • プルダウンリストを自動で設定したい
  • 数値や日付の入力制限をかけたい

このような場合は、VBAで入力規則を設定することで簡単に解決できます。
一度コードを書いておけば、入力ルールを自動で設定できるため、業務効率が大幅に向上します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • プルダウンリストを設定できる
  • 数値・日付の入力制限ができる
  • 複数セルに一括設定できる
  • 実務で使えるコードが分かる

基本:入力規則を設定するコード

まずは基本の書き方です。

Option Explicit

Sub SetValidationBasic()

    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="A,B,C"
    End With

End Sub

このコードで、A1セルに「A・B・C」のプルダウンが設定されます。


コードのポイント解説

① .Delete

既存の入力規則を削除してから設定します。
これを入れないとエラーになることがあります。

② .Add

入力規則の本体です。

.Add Type:=種類, Formula1:=条件

プルダウンリストを設定する

最もよく使うパターンです。

Option Explicit

Sub SetDropdown()

    With Range("A1:A10").Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="未処理,進行中,完了"
    End With

End Sub

これでA1~A10にプルダウンが設定されます。


セル範囲を参照したプルダウン

別のセル範囲をリストとして使う場合はこちらです。

Option Explicit

Sub SetDropdownFromRange()

    With Range("B1:B10").Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=$D$1:$D$5"
    End With

End Sub

D1:D5の値がプルダウンに表示されます。


数値の入力制限を設定する

1〜100の数値だけ入力できるようにする例です。

Option Explicit

Sub SetNumberValidation()

    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateWholeNumber, _
             Operator:=xlBetween, _
             Formula1:="1", _
             Formula2:="100"
    End With

End Sub

日付の入力制限を設定する

Option Explicit

Sub SetDateValidation()

    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateDate, _
             Operator:=xlBetween, _
             Formula1:="2024/01/01", _
             Formula2:="2024/12/31"
    End With

End Sub

文字数制限を設定する

5文字以内に制限する例です。

Option Explicit

Sub SetTextLengthValidation()

    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateTextLength, _
             Operator:=xlLessEqual, _
             Formula1:="5"
    End With

End Sub

エラーメッセージを設定する

入力エラー時にメッセージを表示できます。

With Range("A1").Validation
    .Delete
    .Add Type:=xlValidateWholeNumber, Operator:=xlBetween, Formula1:="1", Formula2:="100"
    .ErrorTitle = "入力エラー"
    .ErrorMessage = "1~100の数値を入力してください"
End With

入力メッセージ(ヒント)を表示する

With Range("A1").Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="A,B,C"
    .InputTitle = "入力してください"
    .InputMessage = "A・B・Cから選択してください"
End With

実務での活用例

  • ステータス管理(未処理・完了など)
  • 入力フォームの制御
  • 数値・日付の入力ミス防止
  • アンケートや申請フォーム作成

入力規則は、データ品質を保つために非常に重要な機能です。


よくあるエラーと対処法

① 入力規則が上書きされない

必ず .Delete を先に書いてください。

② リストが表示されない

カンマ区切りや参照範囲の指定ミスを確認してください。

③ コードは正しいのにエラーになる

コピー時に全角文字が混ざることがあります。
その場合は手入力し直すと解決することがあります。


まとめ

  • 入力規則は Validation.Add で設定できる
  • プルダウン・数値・日付など対応可能
  • Deleteしてから設定が基本
  • 入力ミス防止に非常に効果的

入力規則をVBAで設定できるようになると、Excelの入力精度が大きく向上します。
業務効率化にも直結するので、ぜひ活用してみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました