入力規則が設定されていないセルを操作する
A1:C10で入力規則が設定されていないセルだけに背景色を付けます。
実行前に確認
- 規則なしのセルを調べる行だけでエラーを扱います。入力規則の設定や削除はしませんが、通常の背景色は変更します。
1サンプルコード
Sub Example1170()
Dim ws As Worksheet
Dim c As Range
Dim t As Long
Dim hasRule As Boolean
Set ws = ThisWorkbook.Worksheets("Sheet1")
For Each c In ws.Range("A1:C10").Cells
On Error Resume Next
Err.Clear
t = c.Validation.Type
hasRule = (Err.Number = 0)
Err.Clear
On Error GoTo 0
If Not hasRule Then c.Interior.Color = RGB(255, 240, 200)
Next c
End Sub図で見る操作の流れ
イメージ図コードの動きを表した概念図です。実際のExcel画面ではありません。
対象:Sheet1!A1:C10
各セルを1つずつ調べる
マクロ:入力規則を確認
Validation.Typeを取得できるか判定する
規則なしの場合
背景を淡い黄色 RGB(255,240,200) にする
次のセルへ
規則があれば背景は変えず、全セルまで繰り返す
入力規則自体は設定・削除しません。規則なしと判定したセルの元の背景色は上書きします。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用のブックを.xlsm形式で保存し、Sheet1という名前のシートを用意します。A1:C10の一部へ[データ]→[データの入力規則]でリストなどを設定します。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]へコードを貼り付けます。
- 3
A1:C10が確認範囲です。規則がないセルではType取得時のエラーを使って判定します。
- 4
マクロ内にカーソルを置いてF5で実行します。規則がないセルだけ淡い黄色になります。