【VBA】1行分のセル範囲を対象に処理を行う方法|行単位での書式変更・範囲取得の基本

Excel VBAでマクロを作成する際、「1行分のデータ」を単位として処理したい場面は非常に多くあります。
たとえば、見出し行を太字にする、データが入力されている範囲だけを対象に処理する、などのケースです。

本記事では、特定の行を範囲として選び、書式変更などの操作を行う方法を、静的・動的な範囲指定の2通りで解説いたします。


目次

方法①:明示的に1行分の範囲を指定して操作する

最もシンプルな方法は、対象となる行のセル範囲を明示的に指定する方法です。

Range("B3:F3").Font.Bold = True

解説:

  • Range("B3:F3") は、3行目の「B列からF列まで」の範囲を示します。
  • .Font.Bold = True によって、対象範囲の文字が太字になります。

方法②:行の右端まで動的に取得して操作する

入力されているデータの右端までを自動で検出して、1行分を対象とすることも可能です。

Range("B3", Range("B3").End(xlToRight)).Font.Bold = True

解説:

  • Range("B3").End(xlToRight) は、B3セルから右方向に連続したデータの末端セルを取得します。
  • これにより、見出し行やデータ行の右端までを自動的に取得することができます。
  • 表構造が可変であっても、柔軟に対応可能です。

使用例:3行目のヘッダーを太字にする

B列C列D列E列F列
氏名得点評価コメント更新日

このような見出し行が3行目にある場合、上記のコードを実行すると、B3〜F3のセルが太字になります。


応用:1行分を範囲オブジェクトとして扱う

操作対象を変数として扱いたい場合は、以下のように Range オブジェクトとして格納しておくことも可能です。

Dim oneLine As Range
Set oneLine = Range("B3", Range("B3").End(xlToRight))

oneLine.Interior.Color = RGB(240, 240, 240)
  • このようにしておくと、複数の処理(太字、背景色、罫線など)をまとめて適用できます。

よくある注意点

内容解説
End(xlToRight) は空白セルで止まる完全に空のセルがあると、そこで終了してしまうため注意が必要です
行全体を対象にしたい場合Rows(3).Font.Bold = True のような指定でも可能です(ただし全列対象)
行の開始セルは固定にする範囲の起点はデータの始まり列に合わせることを推奨します(例:B列やA列など)

まとめ

処理方法使用コード特徴
静的範囲指定Range("B3:F3")明確な列範囲を指定
動的範囲指定Range("B3", Range("B3").End(xlToRight))データの右端までを自動検出
オブジェクト化Set 変数 = Range(...)まとめて複数処理が可能

このように、行単位での操作は表データの整形・書式設定・自動処理に非常に便利です。
静的な範囲指定と、動的な範囲検出の両方を使いこなすことで、柔軟で堅牢なマクロを構築することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次