このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】入力規則でリストを設定する方法

2024年5月20日

今回はVBAを使って「データの入力規則」を自動設定する方法を紹介します。

「データの入力規則」はデータタブの画像の位置にある機能です。

他の人にデータ入力を頼むときに便利な機能ですよね。

「データの入力規則」はVBAからでも簡単に設定することができるので活用してみてください。

この記事では↓の内容が分かります。

  • データの入力規則の設定方法
  • リストを指定する方法
  • 整数を指定する方法
  • 日付を指定する方法

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

VBAでデータの入力規則を設定する方法

Sub Sample1()
    'データの入力規則を設定(リスト)
    
    '入力規則を設定するセルを指定
    With Range("A1").Validation
        
        '現在の設定を削除する(エラー対策)
        .Delete
        
        '入力規則を設定(リスト)
        .Add Type:=xlValidateList, Formula1:="はい,いいえ,未回答"
    End With
End Sub

サンプルコードを実行すると画像のようにリスト指定の入力規則を設定することができます。

入力規則の設定にはValidationオブジェクトを使います。このオブジェクトはRange.Validationとすることで得ることができます。

        '入力規則を設定(リスト)
        .Add Type:=xlValidateList, Formula1:="はい,いいえ,未回答"

実際に入力規則を設定しているのは、このAddメソッドです。

AddメソッドではTypeによって設定する入力規則をします。 (今回はリストを指定)

そして、リストの選択肢はFormula1で指定をします。

設定できる入力規則の種類(Type)は下表のようになります。

名前説明
xlValidateCustom7データは任意の式を使用して検証されます
xlValidateDate4データ値
xlValidateDecimal2数値
xlValidateInputOnly0ユーザーが値を変更した場合にのみ検証が行われます
xlValidateList3指定された一覧に値が存在する必要があります
xlValidateTextLength6テキストの長さ
xlValidateTime5時刻値
xlValidateWholeNumber1数値全体
入力規則の種類(Type)

入力規則の種類によってはAddメソッドでFormula1の他にOperatorやFormula2が必要になります。

Formula1,2とOperatorは入力規則を作るときの設定できる項目に対応しています。(画像のデータや最小値、最大値)

よく分からないときはマクロの記録で確認してみましょう。

整数を指定する方法

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

整数を指定するときはTypeにxlValidateWholeNumberを指定します。

サンプルコードではOperatorにxlBetweenを指定して、入力できる整数の最大値と最小値を指定しています。

Formula1が最小値、Formula2が最大値です。

日付を指定する方法

Sub Sample3()
    
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateDate, Operator:=xlBetween, Formula1:="1/1/2023", Formula2:="12/31/2023"
    End With
End Sub

日付を指定するときはTypeにxlValidateDateを指定します。

サンプルコードではOperatorにxlBetweenを指定して、入力できる日付の最大と最小を指定しています。

Formula1が最小、Formula2が最大の日付となります。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

VBA

Posted by やろまい