Home > 即効テクニック > Excel VBA > セル操作関連のテクニック > セルの入力規則を設定する(Validationプロパティ)

即効テクニック

セル操作関連のテクニック

セルの入力規則を設定する(Validationプロパティ)

(Excel 2000)
Rangeオブジェクトの下位オブジェクトであるValidationオブジェクトを参照します。セル範囲の入力規則を表すオブジェクトです。Validationオブジェクトには18のプロパティ、3つのメソッドがあります。ここではそれらに関しては詳しい解説を行わず、入力規則を設定する方法について、サンプルコードで簡単に紹介するに止めます。

 構文  Object.Validation     取得のみ

 設定項目     内容
  Object       対象のRangeオブジェクト

次のサンプルは、Addメソッドを用いてセルA1に新規に入力規則を設定します。
●サンプル1●
Sub ValidationSamp1()

    With Range("A1").Validation
        .Add _
            Type:=xlValidateWholeNumber, _
            AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, _
            Formula1:=1, Formula2:=10                            '---(1)
        .InputTitle = "入力できる値が制限されています"           '---(2)
        .InputMessage = "1 から 10 までの整数を入力してください" '---(3)
        .ErrorTitle = "再試行でもう一度入力できます"             '---(4)
        .ErrorMessage = "入力できるのは 1 から 10 までの値です"  '---(5)
        .IgnoreBlank = False        '---ブランクの入力を認めません
        .IMEMode = xlIMEModeAlpha   '---IMEモードを半角英数字に
    End With

End Sub
(1)の、Addステートメントの各引数での指定により、セルA1には
   ・1〜10までの全角数字のみ入力可能
   ・それ以外の値が入力された際には処理を中断する
といった入力規則が設定されました。(1)〜(5)までの指定が画面上にどのように反映されるかは、実行後の図を見て確認してください。また、ブランクの入力を許可するか否か、セル選択時のIMEモードの制御なども指定できます。
セルの入力規則を変更したい場合、Midifyステートメントを使用します。次のサンプルはセルA1の入力規則を変更します。
●サンプル2●
Sub ValidationSamp2()

    With Range("A1").Validation
        .Modify _
            Type:=xlValidateList, _
            AlertStyle:=xlValidAlertWarning, _
            Operator:=xlEqual, _
            Formula1:="ロンドン,東京,ニューヨーク"              '---(1)
        .InputTitle = "リストから選択できます"
        .InputMessage = "リストから選択されることをお勧めします"
        .ErrorTitle = "リストから選択されませんでした"
        .ErrorMessage = "リストからの再入力をお勧めします"
        .IgnoreBlank = True          '---ブランクの入力を認めます
        .IMEMode = xlIMEModeHiragana '---IMEモードを全角かなに
    End With

End Sub
(1)の、Modifyステートメントの各引数での指定により、セルA1の入力規則は、
   ・リストボックスを用いてロンドン、東京、ニューヨークから値を選択できる
   ・それ以外の値が入力された際には警告メッセージを表示
   ・警告メッセージで「はい」を押せば、設定した値以外も入力可能
といった入力規則に変更されました。引数の種類はAddステートメントと同じです。また、ブランクの入力は警告無しに許可され、IMEモードはセル選択時に自動的に全角かなになるような状態になっています。

なお、リストボックスに表示させる値は、上記のようにカンマ(,)で区切って指定する他に、同じシート内の別のセル範囲の値を参照する方法も用意されています。F1〜F10にリストが用意されているものとすると、Formula1の部分を次のように記述します。
   Formula1:= "=$F$1:$F$10"

最後に、設定した入力規則を削除するサンプルを紹介します。
●サンプル3●
Sub ValidationSamp3()

    With Range("A1").Validation
        .Delete              '---Validatiオブジェクトを削除します
    End With

End Sub
削除後に再度入力規則を設定する際には、Addメソッドを使用してください。