EXCEL VBA セルの入力規則を設定する。数字・数値・整数の範囲・次の値の間(Validationオブジェクト)
EXCEL VBA セルの入力規則を設定する。数字・数値・整数の範囲・次の値の間・条件指定(Validationオブジェクト)
今回説明するのは、セルの入力規則の説明を行います。入力規則の中でも数字に特化した入力規制の登録方法を含めて説明いたします。Validationオブジェクトにつきましては、以前、ドロップダウンリストの説明の時に、触れていいますので、詳細につきましては下記URL(ドロップダウンリスト)を参照し下さい。セルの入力規則を設定する事で、セルに対して一定の範囲や入力条件等を設定することでユーザーが間違えて数値などの入力を防ぐ事ができますので、とても便利だと思います。それでは、サンプルプログラムを交えて順番に説明いたします。
●【EXCEL VBA ドロップダウンリスト・プルダウンリスト・コンボボックスの作成(リスト選択)、下記を参照して下さい】
●【Validation オブジェクト (Excel)、下記を参照して下さい】(Microsoft社 様)】
https://docs.microsoft.com/ja-jp/office/vba/api/excel.validation
● Validation.Addメソッド を利用するには、下記の通りに設定を行います。
● Rangeオブジェクト.Add(Type,Alertstyle,Operator,Formula1,Formula2)
パラメータ(引数) | 必須・省略可能 | 説明 |
---|---|---|
Type | 必 須 | 入力規則の種類を指定します。 |
Alertstyle | 省略可能 | 入力規則でのエラースタイルを指定する事が出来ます。 |
Operator | 省略可能 | データ入力規則の演算子を指定します。 |
Formula1 | 省略可能 | データ入力規則での条件式の最初の部分を指定します。 値は 255 文字を超える事はできません。 |
Formula2 | 省略可能 | 引数_Operator_がXlbetweenまたはxlnotbetweenの場合、データ入力規則の2番目の部分を指定します。それ以外の場合、この引数は無視します。 |
【 Alertstyle 】・・・ 入力規則でのエラースタイルを指定します。
定数 | 値 | 内容(説明) | メッセージ表示 |
---|---|---|---|
xlValidAlertStop | 1 | 中止 | |
xlValidAlertWarning | 2 | 警告 | |
xlValidAlertInformation | 3 | 情報 |
【 Operator 】・・・ 条件式の演算子を指定します。
定数 | 値 | 内容(説明) |
---|---|---|
xlBetween | 1 | 次の値の間 |
xlNotBetween | 2 | 次の値の間以外 |
xlEqual | 3 | 次の値と等しい |
xlNotEqual | 4 | 次の値と等しくない |
xlGreater | 5 | 次の値より大きい |
xlLess | 6 | 次の値より小さい |
xlGreaterEqual | 7 | 次の値以上 |
xlLessEqual | 8 | 次の値以下 |
【 Formula1,Formula2 】・・・ 制限を設定する数値を入力します。範囲を設定する場合は、(開始)Formula1 ~ (最後)Formula2
・・・ 範囲を設定しない場合は、以上・以下等の場合は、Formula1のみに設定する。
● Validation.InputTitle・Validation.InputMessage プロパティ
・ .InputTitle・・・入力時に表示するタイトルを設定します。
・ .InputMessage・・・入力時に表示するメッセージ内容を設定します。
● Validation.ErrorTitle・Validation.ErrorMessage プロパティ
・ .ErrorTitle・・・入力規則でエラーが発生場合のタイトルを設定します。
・ .ErrorMessage・・・入力規則でエラーが発生した場合に表示するメッセージ内容を設定します。
● Validation.IMEMode プロパティ
・ .IMEMode・・・セル後に日本語入力モードの既定値を設定する事ができます。
【使用例】
●下記のサンプルプログラムは、セルA1~A5に下記の条件にて入力規制を行った場合のサンプルプログラムです。
・入力値の種類⇒【整数】・・・xlValidateWholeNumber
・データ範囲⇒【次の値の間】・・・xlBetween
・最小値⇒【0】・・・Formula1・最大値⇒【99】・・・Formula2
・スタイル⇒【情報】・・・xlValidAlertInformation
・入力時タイトル⇒【”タイトル(Title)”】・・・InputTitle
・入力時メッセージ⇒【”数値を入力してください!(Message)”】・・・InputMessage
・エラータイトル⇒【”入力エラー(Title)”】・・・InputTitle
・エラーメッセージ⇒【”0~99の数値を入力してください。”】・・・ErrorMessage
・日本語入力⇒【半角英数字】・・・ xlIMEModeAlpha
【サンプルプログラム】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
' ' Sub Validation00() 'セルA1~A5の範囲に入力規則を設定します。 With Range("A1:A5").Validation '入力規則のセル位置を指定(A1~A5)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlBetween, _ Formula1:="0", _ Formula2:="99", _ AlertStyle:=xlValidAlertInformation 'Type ⇒ 入力値の種類を数値に設定 'Operator ⇒ 次の値の間 'Formula1 ⇒ 0 開始 0~ 'Formula2 ⇒ 99 終了 ~99まで .InputTitle = "タイトル(Title)" .InputMessage = "数値を入力してください!(Message)" .ErrorTitle = "入力エラー(Title)" .ErrorMessage = "0~99の数値を入力してください。" .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
【注意点】
・入力規則をセルに登録する際は、一度既存の入力規則を削除する必要があります。この処理を行う事でスムーズにて入力規則を設定する事が出来ます。
例)
With Range(“A1:A5”).Validation ‘入力規則のセル位置を指定(A1~A5)します。
.Delete ‘既存の入力規則を削除します。
’入力規則の設定
End With
EXCEL VBA セルの入力規則を設定する。入力する数値の範囲を指定します。数字の範囲・複数サンプル例(Validationオブジェクト)
下記のサンプルプログラムは、セルの入力規則を設定する方法を説明いたします。今回のサンプルプログラムでは、数値に限定して8パターンの設定方法を説明いたします。
下記のサンプルプログラムでは、【次の値の間】を数値で指定するパターンのプログラムです。
【設定】
:Operator xlBetween
:Formula1 -100
:Formula2 100
【説明】セル(B5~B10)に【-100】~【100】の間の数値が入力されるように入力規則を設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
' ' Sub Validation01() '次の値の間(xlBetween) -100~100の間 With Range("B5:B10").Validation '入力規則のセル位置を指定(B5~B10)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlBetween, _ Formula1:=-100, _ Formula2:=100, _ AlertStyle:=xlValidAlertInformation .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
下記のサンプルプログラムでは、【次の値の間以外】を数値で指定するパターンのプログラムです。
【設定】
:Operator xlNotBetween
:Formula1 50
:Formula2 60
【説明】セル(B5~B10)に【50】~【60】の間以外の数値が入力されるように入力規則を設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
' ' Sub Validation02() '次の値の間以外 (xlNotBetween) 50~60の間以外 With Range("B5:B10").Validation '入力規則のセル位置を指定(B5~B10)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlNotBetween, _ Formula1:=50, _ Formula2:=60, _ AlertStyle:=xlValidAlertInformation .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
下記のサンプルプログラムでは、【次の値と等しい】を数値で指定するパターンのプログラムです。
【設定】
:Operator xlEqual
:Formula1 50
【説明】セル(B5~B10)に【50】と等しい数値が入力されるように入力規則を設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' ' Sub Validation03() '次の値と等しい (xlEqual) 50と等しい With Range("B5:B10").Validation '入力規則のセル位置を指定(B5~B10)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlEqual, _ Formula1:=50, _ AlertStyle:=xlValidAlertInformation .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
下記のサンプルプログラムでは、【次の値と等しくない】を数値で指定するパターンのプログラムです。
【設定】
:Operator xlNotEqual
:Formula1 60
【説明】セル(B5~B10)に【60】と等しくない数値が入力されるように入力規則を設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' ' Sub Validation04() '次の値と等しくない (xlNotEqual) 60と等しくない With Range("B5:B10").Validation '入力規則のセル位置を指定(B5~B10)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlNotEqual, _ Formula1:=60, _ AlertStyle:=xlValidAlertInformation .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
下記のサンプルプログラムでは、【次の値より大きい】を数値で指定するパターンのプログラムです。
【設定】
:Operator xlGreater
:Formula1 70
【説明】セル(B5~B10)に【70】より大きい数値が入力されるように入力規則を設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' ' Sub Validation05() '次の値より大きい (xlGreater) 70より大きい With Range("B5:B10").Validation '入力規則のセル位置を指定(B5~B10)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlGreater, _ Formula1:=70, _ AlertStyle:=xlValidAlertInformation .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
下記のサンプルプログラムでは、【次の値より小さい】を数値で指定するパターンのプログラムです。
【設定】
:Operator xlLess
:Formula1 30
【説明】セル(B5~B10)に【30】より小さい数値が入力されるように入力規則を設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' ' Sub Validation06() '次の値より小さい (xlLess) 30より小さい With Range("B5:B10").Validation '入力規則のセル位置を指定(B5~B10)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlLess, _ Formula1:=30, _ AlertStyle:=xlValidAlertInformation .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
下記のサンプルプログラムでは、【次の値以上】を数値で指定するパターンのプログラムです。
【設定】
:Operator xlGreaterEqual
:Formula1 50
【説明】セル(B5~B10)に【50】以上の数値が入力されるように入力規則を設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' ' Sub Validation07() '次の値以上 (xlGreaterEqual) 50以上 With Range("B5:B10").Validation '入力規則のセル位置を指定(B5~B10)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlGreaterEqual, _ Formula1:=50, _ AlertStyle:=xlValidAlertInformation .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
下記のサンプルプログラムでは、【次の値以下】を数値で指定するパターンのプログラムです。
【設定】
:Operator xlLessEqual
:Formula1 40
【説明】セル(B5~B10)に【40】以上の数値が入力されるように入力規則を設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' ' Sub Validation08() '次の値以下 (xlNotEqual) 40以下 With Range("B5:B10").Validation '入力規則のセル位置を指定(B5~B10)します。 .Delete '既存の入力規則を削除します。 .Add Type:=xlValidateWholeNumber, _ Operator:=xlLessEqual, _ Formula1:=40, _ AlertStyle:=xlValidAlertInformation .IMEMode = xlIMEModeAlpha '入力モードを「半角英数字」に設定します。 End With End Sub ' |
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。