「validation.typeを調べるvba」
「excel validation.type 種類 取得」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
データの入力規則の、入力値の種類を、
Excel VBA(Visual Basic for Applications)から調べるには、どのようなコードを書けばいいのかを探していらしたのでしょうか。
アクティブセルのValidation.Typeを調べるサンプルマクロ
データの入力規則が設定されているセルがアクティブな状態で、以下のSubプロシージャを実行すると、種類を表す数値がメッセージボックスに表示されます。
On Error GoTo ERR_HNDL
MsgBox ActiveCell.Validation.Type
Exit Sub ERR_HNDL:
Err.Clear
MsgBox "入力規則が設定されていません。"
End Sub
「validation.typeを調べるvba」
「excel validation.type 種類 取得」
という検索キーワードのとおり、ValidationオブジェクトのTypeプロパティで、
データの入力規則の、入力値の種類を調べられます。
Validation.Typeプロパティで返される数値の意味は、「ValidationのTypeに指定できる定数一覧」をご参照ください。
アクティブセルに入力規則が設定されていないときに「ActiveCell.Validation.Type」というオブジェクト式が実行されると、実行時エラーが発生しますから、上記のプロシージャでは
On Error GoTo ERR_HNDL
ERR_HNDL:
Err.Clear
MsgBox "入力規則が設定されていません。"
というエラートラップを入れています。
アクティブシートのValidation.Typeを調べるサンプルマクロ
以下のSubプロシージャを実行すると、アクティブシートで入力規則の設定されているセルのアドレスと、Validation.Typeがイミディエイトウィンドウに、出力されます。
Dim rng As Range
On Error GoTo ERR_HNDL
For Each rng In Cells.SpecialCells(xlCellTypeAllValidation)
Debug.Print _
rng.Address(False, False) & vbTab & _
rng.Validation.Type
Next rng
Exit Sub ERR_HNDL:
Err.Clear
MsgBox "入力規則が設定されていません。"
End Sub
Range.SpecialCellsメソッドの引数に、定数・xlCellTypeAllValidationを指定することで、入力規則の設定されているセルを表すRangeオブジェクトを取得して、For Each~Nextループを回して、
For Each rng In Cells.SpecialCells(xlCellTypeAllValidation)
セル番地と、Validation.Typeをイミディエイトウィンドウに出力しています。
Debug.Print _
rng.Address(False, False) & vbTab & _
rng.Validation.Type
アクティブシートに入力規則が設定されていないときに、オブジェクト式「Cells.SpecialCells(xlCellTypeAllValidation)」が実行されると、実行時エラーが発生しますから先のSubプロシージャと同じようにエラートラップしています。
On Error GoTo ERR_HNDL
ERR_HNDL:
Err.Clear
MsgBox "入力規則が設定されていません。"
- Newer:マイナスの値を赤色で表示するExcelマクロ
- Older:条件付き書式の背景色を取得するExcelマクロ
Home » Excel VBA Rangeオブジェクト » 入力規則・Validation » 入力規則の種類を取得するExcelマクロ