~必要なセルだけ効率的に操作するVBAの基本~
Excel VBAでセル範囲を操作するとき、すべてのセルに同じ処理をするのではなく、特定の条件を満たすセルだけを対象に処理したい場面はよくあります。
そのようなときは、ループ処理を使ってセルを1つずつ確認し、条件に合うセルだけ操作するのが基本です。この記事では、その考え方と具体的な書き方をわかりやすく解説します。
目次
1. 基本の考え方
セル範囲をループ処理し、各セルの値を条件判定し、必要な場合だけ処理を実行します。
代表的なループ処理はFor Each
構文を使います。
2. サンプル①:特定の値が入っているセルだけ色を変える
■ 例:「完了」という文字が入っているセルだけ背景色を緑にする
Dim cell As Range
For Each cell In Range("A1:A10")
If cell.Value = "完了" Then
cell.Interior.Color = RGB(144, 238, 144) '薄い緑色
End If
Next cell
3. サンプル②:数値の条件を満たすセルだけ値を変更する
■ 例:数値が80以上のセルだけ「合格」と表示する
Dim cell As Range
For Each cell In Range("A1:A10")
If IsNumeric(cell.Value) And cell.Value >= 80 Then
cell.Value = "合格"
End If
Next cell
4. サンプル③:部分一致を使って条件を判定する
■ 例:「重要」という文字を含むセルだけ文字色を赤にする
Dim cell As Range
For Each cell In Range("A1:A10")
If InStr(cell.Value, "重要") > 0 Then
cell.Font.Color = RGB(255, 0, 0) '赤
End If
Next cell
5. サンプル④:複数条件を組み合わせる
■ 例:「完了」と「重要」の両方を含むセルだけ背景色を黄色にする
Dim cell As Range
For Each cell In Range("A1:A10")
If InStr(cell.Value, "完了") > 0 And InStr(cell.Value, "重要") > 0 Then
cell.Interior.Color = RGB(255, 255, 0) '黄色
End If
Next cell
6. まとめ
このように、セル範囲をループで処理することで、必要なセルだけを的確に操作することができます。
ポイントは以下の通りです。
✔ For Each
構文でセルを1つずつ確認する
✔ 条件をIf
文で判定し、必要なセルだけ処理する
✔ InStr
やIsNumeric
などを組み合わせると、柔軟な条件判定ができる
✔ 複数条件も簡単に組み合わせられる
条件付きでセルを処理する場面は、VBAの中でもよく使われる重要なテクニックです。ぜひ身につけて、効率的なマクロ作成に役立ててください。
コメント