VBAで自動化 VBAテクニック集 VBA一覧 Withステートメント 文法・構文

【VBA】With ステートメントの中に If 文を入れる方法と活用例

VBA の With ステートメントは、オブジェクトの繰り返し記述を省略できる便利な構文 です。
この With の中に If 文を入れることで、オブジェクトの特定条件に応じた処理 をスマートに書くことができます。

本記事では、Excel VBA で With の中に If を組み合わせて使う方法や、その注意点、実践例 を解説します。

With の中に If を入れる基本構文

VBA では、With ステートメントの中に If 文を入れることができます。
With の対象オブジェクトに対して条件分岐をしたいときに便利です。

【VBA】If文の条件を変数に入れて可読性を向上させる方法

✅ 基本構文

With オブジェクト

If .プロパティ = 条件 Then

' 条件に一致した場合の処理

Else

' 条件に一致しない場合の処理

End If

End With

📌 With の中では、「.プロパティ」のように . をつけてオブジェクトの各要素にアクセスできます。
📌 If を入れ子にしても構文エラーにはなりません。

セルの値に応じてフォント色を変える

Sub FormatByValue()

With Range("A1")

If .Value >= 100 Then

.Font.Color = RGB(0, 128, 0) ' 緑色

Else

.Font.Color = RGB(255, 0, 0) ' 赤色

End If

.Font.Bold = True

End With

End Sub

📌 A1セルの値が 100 以上なら緑、未満なら赤に!
📌 .Font.Bold = True のように、If の外でもプロパティ設定が可能!

【VBA】シートを指定して With ステートメントを使う方法と実践例

複数条件で書式を変更

Sub FormatByConditions()

With Range("B2")

If .Value = "" Then

.Interior.Color = RGB(200, 200, 200) ' グレー(未入力)

ElseIf IsNumeric(.Value) And .Value > 1000 Then

.Interior.Color = RGB(255, 255, 0) ' 黄色(大きい数値)

Else

.Interior.Color = RGB(255, 255, 255) ' 白(その他)

End If

End With

End Sub

📌 With の中で If...ElseIf...Else の条件分岐が可能!
📌 書式設定をスッキリ記述できる!

【VBA】複数オブジェクトで With を使う方法と書き方の工夫

セルのフォント設定+条件付き出力

Sub FontStyleByContent()

With Range("C3")

.Font.Name = "Meiryo"
.Font.Size = 11

If .Value = "重要" Then

.Font.Bold = True
.Font.Color = RGB(255, 0, 0)

Else

.Font.Bold = False
.Font.Color = RGB(0, 0, 0)

End If

End With

End Sub

📌 セルに「重要」と入力されていれば赤字・太字にする!
📌 それ以外は通常の文字にリセット!

【VBA】フォーマット設定:数値形式・フォント・背景色の一括/条件設定

■メリットと注意点

✅ メリット

  • 同じオブジェクトに対する条件処理をスッキリ書ける

  • .プロパティ を繰り返さなくてよい

  • 処理速度も若干向上する(オブジェクト参照が一度で済む)

注意点

  • With の中で別のオブジェクトを参照した場合、. を付けると With の対象オブジェクトとして解釈されるため、混乱に注意

  • ネストが深くなりすぎると可読性が下がるので適度に分ける

ネストされた If も使える!

If の中に If をネストして使うことも可能です。

Sub NestedIfInWith()

With Range("D1")

If IsNumeric(.Value) Then

If .Value < 0 Then

.Font.Color = RGB(0, 0, 255) ' 青(負の数)

Else

.Font.Color = RGB(0, 128, 0) ' 緑(正の数)

End If

Else

.Font.Color = RGB(128, 128, 128) ' グレー(非数値)

End If

End With

End Sub

📌 入れ子の IfWith の中で使用可能!

■まとめ

項目内容
目的With の中で条件に応じた処理を簡潔に書く
構文With ... If .プロパティ = 条件 Then ... End If End With
メリット同一オブジェクトへのアクセスがスッキリする/処理が高速
注意点.プロパティ の付け間違いに注意/ネストしすぎに注意

-VBAで自動化, VBAテクニック集, VBA一覧, Withステートメント, 文法・構文