定数セルを処理
Excel VBAで「数式セル」だけでなく「定数セル(直接入力された値)」だけを対象にしたい場面があります。
例えば「数式はそのままにして、入力値だけ色付けしたい」「フィルタ後の定数セルだけ処理したい」といったケースです。
このとき便利なのが SpecialCells(xlCellTypeConstants) と AutoFilter の組み合わせです。初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- SpecialCells(xlCellTypeConstants)
→ 範囲内の「定数セル(直接入力された値)」だけを抽出。 - SpecialCells(xlCellTypeVisible)
→ フィルタや非表示を無視して「見えているセル」だけ対象。 - 組み合わせると強力
→ 「フィルタ後の定数セルだけ処理」が可能。 - エラー処理が必須
→ 対象セルがない場合はエラーになるのでOn Error Resume Nextを入れる。
テンプレ1:定数セルだけ色付け
Sub HighlightConstants()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("A1:D20")
Dim constRg As Range
On Error Resume Next
Set constRg = rg.SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If Not constRg Is Nothing Then
constRg.Interior.Color = vbYellow
End If
End Sub
VB- ポイント:
- 数式セルは対象外。
- 入力値だけ黄色に。
テンプレ2:定数セルだけ合計
Sub SumConstants()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("C2:C50")
Dim constRg As Range
On Error Resume Next
Set constRg = rg.SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If Not constRg Is Nothing Then
MsgBox "定数セルの合計=" & WorksheetFunction.Sum(constRg)
End If
End Sub
VB- ポイント:
- 数式の結果は含めず、直接入力された数値だけ合計。
テンプレ3:AutoFilter+定数セルだけ処理
Sub FilterAndConstants()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("A1:C20")
' A列で「東京」だけフィルタ
rg.AutoFilter Field:=1, Criteria1:="東京"
Dim constRg As Range
On Error Resume Next
Set constRg = rg.SpecialCells(xlCellTypeConstants).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not constRg Is Nothing Then
constRg.Font.Color = vbRed
End If
' フィルタ解除
ws.AutoFilterMode = False
End Sub
VB- ポイント:
- フィルタで「東京」だけ表示。
- さらに「定数セルだけ赤文字」に。
テンプレ4:定数セルだけループ処理
Sub LoopConstants()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("B2:B20")
Dim constRg As Range, c As Range
On Error Resume Next
Set constRg = rg.SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If Not constRg Is Nothing Then
For Each c In constRg
c.Value = c.Value & "★"
Next c
End If
End Sub
VB- ポイント:
- 定数セルだけに「★」を付ける。
- 数式セルは対象外。
例題で練習
'例1:定数セルだけ色付け
Sub Example1()
HighlightConstants
End Sub
'例2:定数セルだけ合計
Sub Example2()
SumConstants
End Sub
'例3:フィルタ後の定数セルだけ処理
Sub Example3()
FilterAndConstants
End Sub
'例4:定数セルだけループ処理
Sub Example4()
LoopConstants
End Sub
VB初心者向けポイント
- xlCellTypeConstants → 入力値だけ対象。
- xlCellTypeFormulas → 数式セルだけ対象。
- xlCellTypeVisible → フィルタや非表示を無視して「見えているセル」だけ対象。
- 組み合わせると強力 → 「フィルタ後の定数セルだけ処理」が可能。
- エラー処理を忘れない → 対象セルがないとエラーになる。
👉 この「SpecialCells / AutoFilter × 定数セルテンプレ」を覚えておけば、Excel VBAで 入力値だけを対象にした処理やフィルタ後の定数セル操作 を高速に実務へ応用できます。
