【Excel VBA】データの入力規則を一括設定させるマクロ(Range指定対応)

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

この記事でできること

Excel VBAを使用して、指定したセル範囲(Area)に対して、別のセル範囲(List)をリスト元としたデータの入力規則を効率よく一括設定することができます。Rangeオブジェクトを引数に取るため、柔軟なセル指定が可能です。

想定環境・前提条件

  • Microsoft Excel 2010以降(Microsoft 365推奨)
  • VBAの実行権限および開発タブが有効な環境

完全なコード例

Sub test()
    ' D4:D15に入力規則を設定し、リストの参照元としてI2:I5を指定する例
    Call 入力規則の設定(Me.Range("D4:D15"), Me.Range("I2:I5"))
End Sub

' 入力規則の設定
' Area: 入力規則を設定するセル範囲
' List: リストの選択肢となるセル範囲
Sub 入力規則の設定(ByRef Area As Range, ByRef List As Range)
    With Area.Validation
        .Delete
        .Add Type:=xlValidateList, _
             AlertStyle:=xlValidAlertWarning, _
             Operator:=xlBetween, _
             Formula1:="=" & List.Address(External:=True)
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .IMEMode = xlIMEModeNoControl
        .ShowInput = True
        .ShowError = False
    End With
End Sub

使い方とコードのポイント

呼び出し元のプロシージャ(testなど)から、対象範囲とリスト範囲をRangeオブジェクトで渡します。

ポイントとなるのはValidationプロパティの指定方法です。

Formula1:="=" & List.Address(External:=True)

ここで指定するアドレスの先頭には=を付与する必要があります。また、別シートを参照する場合などを考慮し、List.Address(External:=True)を使用するとシート名やブック名を含めた絶対参照になりエラーを防ぎやすくなります。

典型的な失敗例・エラー

エラーが発生する場合の確認ポイント:

  • Listの範囲が別シートを指している場合、Addressプロパティにシート名が含まれていないと「値りストは、区切られたリストであるか、または単一の行や列でなければなりません。」というエラーになることがあります。必要に応じてExternal:=Trueを利用してください。
  • Areaが単一セルではなく複数エリアに分かれている場合(マルチエリア)、Validationの設定でエラーになることがあるため、連続したセル範囲を指定してください。

参考情報

Microsoft Learn: Validation オブジェクト (Excel)

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 変更blockquoteで囲まれていたコードを適切なコードブロックおよび見出し構造に修正しました。
  • 追加マクロの使用目的、前提条件、実行手順、およびトラブルシューティングの解説を追加しました。

文書情報

記事タイトル
【Excel VBA】データの入力規則を一括設定させるマクロ(Range指定対応)
作成日
更新日
Source URL
https://papanda925.com/?p=538

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

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