カテゴリ: Excel VBA 更新日: 2026/04/07

VBAで複数セルをまとめて操作!Rows・Columns・CurrentRegionの使い方を徹底解説

複数セル範囲を扱う基礎!Rows/Columns/CurrentRegionの使い方
複数セル範囲を扱う基礎!Rows/Columns/CurrentRegionの使い方

先生と生徒の会話形式で理解しよう

生徒

「エクセルで1行丸ごと色を塗ったり、表全体を一気にコピーしたりしたいのですが、一つずつセルを指定するのは大変です。何か良い方法はありますか?」

先生

「それなら、RowsColumns、それにCurrentRegionを使うのが一番ですよ!これらを使えば、行や列、さらには繋がっている表全体をひとまとめに扱うことができるんです。」

生徒

「ひとまとめに!それは便利そうですね。具体的にはどうやって書くんですか?」

先生

「基本的な使い方から、実務で役立つテクニックまで、初心者の方にもわかりやすく順番に説明しますね!」

1. 複数セル範囲を扱う重要性とは?

1. 複数セル範囲を扱う重要性とは?
1. 複数セル範囲を扱う重要性とは?

Excel VBA(エクセル・ブイビーエー)を使い始めたばかりのときは、一つのセルだけを操作することが多いかもしれません。しかし、実際の仕事では「3行目全体を消したい」「B列全体を太字にしたい」といった、広い範囲を一度に操作したい場面がほとんどです。

プログラミング未経験の方がまず覚えるべきは、パソコンに対して「どこからどこまで」という範囲を正確に伝える方法です。個別のセルを一つずつ命令するよりも、範囲をガバッと指定して一気に命令を出す方が、プログラムの見た目もスッキリしますし、実行スピードも速くなります。今回は、その範囲指定の主役となる三つの道具について詳しく見ていきましょう。

2. Rowsを使って「行」を丸ごと操作する

2. Rowsを使って「行」を丸ごと操作する
2. Rowsを使って「行」を丸ごと操作する

Rows(ロウズ)は、エクセルの「行」を指し示すための言葉です。エクセルの左側に並んでいる1、2、3という数字の列が「行」ですね。Rowsを使えば、特定の行全体を対象にすることができます。

例えば、Rows(3)と書けば、3行目全体を選択したり、色を変えたりできます。複数の行を指定したいときは、Rows("3:5")のように、ダブルクォーテーションで囲んで範囲を指定します。これは、私たちがマウスで行番号をドラッグして選択する操作を、プログラムの言葉に置き換えたものだと考えてください。事務作業で「見出しの行だけを目立たせたい」というときに非常に重宝します。


Sub RowsSample()
    ' 2行目全体を黄色に塗ります
    Rows(2).Interior.Color = vbYellow
    
    ' 4行目から6行目までをまとめて非表示にします
    Rows("4:6").Hidden = True
End Sub

3. Columnsを使って「列」を丸ごと操作する

3. Columnsを使って「列」を丸ごと操作する
3. Columnsを使って「列」を丸ごと操作する

次に紹介するのがColumns(カラムズ)です。こちらはエクセルの「列」、つまり上側に並んでいるA、B、Cというアルファベットの部分を指します。縦方向のまとまりを一気に操作したいときに使います。

使い方はRowsと似ていますが、列はアルファベットで指定することが一般的です。Columns("B")と書けばB列全体を、Columns("C:E")と書けばC列からE列までを指定できます。また、数字を使ってColumns(2)と書くこともでき、これはB列を指します。列全体の幅を自動で調整したり、特定の項目が入っている列をまとめて削除したりする際に、このColumnsという命令が欠かせません。


Sub ColumnsSample()
    ' C列全体の文字を太字にします
    Columns("C").Font.Bold = True
    
    ' A列からE列までの幅を、文字の長さに合わせて自動調整します
    Columns("A:E").AutoFit
End Sub

4. CurrentRegionで「表全体」を一瞬でつかむ

4. CurrentRegionで「表全体」を一瞬でつかむ
4. CurrentRegionで「表全体」を一瞬でつかむ

初心者の方にぜひ覚えてほしい最強の道具が、CurrentRegion(カレント・リージョン)です。これは、特定のセルから見て「データの入力が繋がっている範囲」を自動的に判別して、一つの表として認識してくれる機能です。

エクセルのショートカットキーで「Ctrlキー + Shiftキー + *キー」を押したときの動作と同じです。例えば、A1セルから始まった表がどこまで続いているか分からなくても、Range("A1").CurrentRegionと書くだけで、エクセルが勝手に表の端っこを探してくれます。データが10行の日もあれば100行の日もあるような、毎日行数が変わる集計表を扱うとき、この機能を知っているだけで自動化の難易度が劇的に下がります。


Sub CurrentRegionSample()
    ' A1セルが含まれる表全体を選択します
    ' 表の大きさが変わっても、常にデータがある範囲を自動認識します
    Range("A1").CurrentRegion.Select
    
    ' 選択した表全体に格子状の罫線を引きます
    Selection.Borders.LineStyle = xlContinuous
End Sub

5. RowsとColumnsのインデックス指定のコツ

5. RowsとColumnsのインデックス指定のコツ
5. RowsとColumnsのインデックス指定のコツ

ここで「インデックス」という言葉について解説します。インデックスとは、何番目かを示す「番号」のことです。RowsやColumnsの中に書く数字やアルファベットがこれに当たります。

パソコンを初めて触る方にとっては、Rows(1)が一番上の行であることは直感的に分かりやすいですが、列を数字で指定するColumns(3)がC列であることを覚えるには少し慣れが必要です。VBAでは、行も列も数字で管理することが多いため、A=1、B=2、C=3…と心の中で変換する癖をつけておくと、後々「繰り返し処理」を学ぶときに非常に楽になります。まずは単純な数字指定から始めて、少しずつアルファベット指定との使い分けを身につけていきましょう。

6. CurrentRegionを使うときの注意点:空行・空列の壁

6. CurrentRegionを使うときの注意点:空行・空列の壁
6. CurrentRegionを使うときの注意点:空行・空列の壁

便利なCurrentRegionですが、一つだけ弱点があります。それは「完全に空っぽの行や列」があると、そこで表の繋がりが切れてしまうことです。例えば、表の途中に一行だけ何も入力されていない真っ白な行があると、CurrentRegionはその手前までしか表だと認識してくれません。

これを防ぐためには、データを入力する際に一行も空けずに詰めて書くか、あるいは空の行があってもデータを繋げたい場合は別の方法(最終行を取得する方法など)を組み合わせる必要があります。しかし、綺麗なデータ作りを心がけていれば、CurrentRegionほど強力な味方はありません。表の周りに1マスの空白(空行・空列)を作ることで、エクセルに「ここが表の境界線だよ」と教えてあげることが、上手な使い方のコツです。

7. 特定のセル範囲から行や列を取り出す応用技

7. 特定のセル範囲から行や列を取り出す応用技
7. 特定のセル範囲から行や列を取り出す応用技

RowsやColumnsは、シート全体に対してだけでなく、特定の範囲(Range)に対しても使うことができます。例えば「表全体の3行目」といった指定の仕方です。これは少し応用的な内容ですが、知っておくとコードがぐっと賢くなります。

Range("A1").CurrentRegion.Rows(2)と書くと、表全体の中での2行目(つまり見出しの次のデータ行)だけを指定できます。シート全体のRows(2)とは違い、あくまで「その表の中での順番」になるのがポイントです。この「範囲の中の範囲」を指定する考え方ができるようになると、どんなに複雑なレイアウトの表でも、自由自在に狙った場所を操作できるようになります。


Sub AdvancedRangeSample()
    Dim targetTable As Range
    Set targetTable = Range("B2").CurrentRegion
    
    ' 表全体の「最初の列」だけを水色にします
    targetTable.Columns(1).Interior.Color = vbCyan
    
    ' 表の「2行目」に特定の文字を入れます
    targetTable.Rows(2).Cells(1).Value = "データ開始"
End Sub

8. プロパティとメソッド:操作のバリエーション

8. プロパティとメソッド:操作のバリエーション
8. プロパティとメソッド:操作のバリエーション

最後に、Rows、Columns、CurrentRegionで取得した範囲に対して、どんなことができるかを紹介します。VBAでは、対象(オブジェクト)に対して「状態を変える(プロパティ)」か「動作をさせる(メソッド)」という二つの操作を行います。

例えば、.Delete(デリート)を付ければ削除、.Copy(コピー)を付ければコピーという動作をさせることができます。また、.Value(バリュー)を使えば値を書き換えられますし、.Font.Color(フォント・カラー)を使えば文字の色を変えられます。今回学んだ「範囲のつかみ方」と、これらの「操作の言葉」を組み合わせることで、あなたのエクセル作業は無限に自動化できるようになります。まずは簡単な色塗りのコードから試して、パソコンが自分の指示通りに動く快感を味わってみてください!

カテゴリの一覧へ
新着記事
New1
Excel VBA
Excel VBA学習の最短ルート!初心者が3日で基本を身につける学習ステップ
New2
Excel VBA
ExcelマクロとVBAの違いとは?初心者でもわかる自動化の基本と仕組みを徹底解説
New3
Office Scripts
Office ScriptsでExcelのシート保護を自動化!ワークシート保護・解除をスクリプトで制御する方法
New4
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成
No.2
Java&Spring記事人気No2
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.3
Java&Spring記事人気No3
Excel VBA
個人用マクロブック(PERSONAL.XLSB)で作る最強の共通ライブラリ化ガイド
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBA参照設定エラー「参照が見つかりません」を完全解説!初心者でも原因と対処法がわかる
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBAのループ処理を徹底解説!For文とDo Loopで繰り返しを自動化
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsの基本!関数分割で読みやすいExcel自動化コードを設計する方法
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!なぜTypeScriptを使うのか?Excel自動化のための目的をやさしく解説