条件付き書式が設定されているかどうかを調べるExcelマクロをご紹介しました。
似たような件で、入力規則が設定されているかどうかを調べたい、という要望もあるようです。
このサイト・インストラクターのネタ帳のアクセスログでも、
「excelvba 入力規則 設定有無」
「excel vba 入力規則設定の有無」
といった検索キーワードが見られます。
入力規則が設定されているかどうかをサンプルマクロ
以下のようなSubプロシージャで、アクティブなワークシートに入力規則が設定されているかどうかを調べられます。
Dim rng As Range
On Error Resume Next
Set rng = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo 0
MsgBox "アクティブシートに入力規則は設定されていません。"
Else
rng.Select
MsgBox "選択されているセルに、入力規則が設定されています。"
End If
End Sub
サンプルマクロの解説
[選択オプション]ダイアログで[データの入力規則]-[すべて]オプションを選択すると、
入力規則の設定されているセルだけを選択できます。
この操作をマクロ記録すると、
ActiveCell.SpecialCells(xlCellTypeAllValidation).Select
というコードができます。
このコードを流用して作ったのが上記のSubプロシージャです。
Range.SpecitalCellsメソッドの引数に、
定数・xlCellTypeAllValidationを指定することで、
入力規則の設定されているセルを取得して、オブジェクト変数・rngにセットするようにしています。
Set rng = Cells.SpecialCells(xlCellTypeAllValidation)
入力規則の設定されているセルがなかったときには、
Set rng = Cells.SpecialCells(xlCellTypeAllValidation)
で実行時エラーが発生しまいますから、事前に
On Error Resume Next
としています。
オブジェクト変数・rngにセットする、
Set rng = Cells.SpecialCells(xlCellTypeAllValidation)
が実行されたあと、オブジェクト変数の初期値・Nothingのままなら、入力規則が設定されているセルは存在しないと判断できます。
If rng Is Nothing Then
MsgBox "入力規則は設定されていません。"
- Newer:全てのシートの行を非表示にするExcelマクロ
- Older:プログラミングを勉強するきっかけとなった
Home » Excel VBA Rangeオブジェクト » 入力規則・Validation » 入力規則が設定されているかを調べるExcelマクロ