【Excel VBA】列番号を指定してRange(セル範囲)を操作する4つの方法
この記事では、Excel VBAを使って列番号を指定し、Rangeオブジェクトでさまざまな処理を行う方法を解説します。セル範囲の選択、値の一括設定、別シートの範囲選択、最終列番号の取得まで、実用的な4つの手法をサンプルコード付きで紹介します。
練習用ワークブックのダウンロード
この記事で使用している練習用のExcelファイルは、こちらから無料でダウンロードできます。
VBAのRangeオブジェクトとは
VBAのRangeオブジェクトは、ワークシート上の単一セル、複数セル、行、列など、さまざまな範囲を表現できるオブジェクトです。
Rangeオブジェクトの階層構造は以下のとおりです。
Application > Workbook > Worksheet > Range
VBAでRangeオブジェクトを宣言する際は、次のように記述します。

列番号を使ってRangeを操作する4つの方法
ここでは、VBAマクロを使って列番号を指定したセル範囲の選択、列番号を指定した範囲への値の設定、そして範囲内の最終列番号の取得を行う方法を順番に説明します。
1. 列番号を指定してセル範囲を選択するVBAコード
下図のようなデータセットから、列番号を指定してセル範囲を選択したい場合は、以下の手順を参考にしてください。

手順:
- キーボードで Alt + F11 を押すか、リボンの 開発 → Visual Basic をクリックして、VBE(Visual Basic Editor)を開きます。

- 開いたコードウィンドウで、メニューバーから 挿入 → 標準モジュール を選択します。

- 以下のコードをコピーして、コードウィンドウに貼り付けます。
Sub SetRange()
Range(Cells(2, 3), Cells(10, 5)).Select
End Sub
コードのポイント:
- Cells(2,3) = 2行目・3列目(セルC2)=範囲の起点
- Cells(10,5) = 10行目・5列目(セルE10)=範囲の終点
これでコードを実行する準備が整いました。

- キーボードの F5 キーを押すか、メニューバーの 実行 → Sub/ユーザーフォームの実行 を選択してマクロを実行します。サブメニューバーの再生アイコンをクリックしても実行できます。

実行すると、指定した列番号に基づいて、C2~E10 のセル範囲が選択されます(下図参照)。

関連記事: 行番号を変数で指定するVBA Rangeの使い方
2. 列番号を指定してセル範囲に値を設定するVBAコード
前のセクションでは列番号による範囲選択を学びました。ここでは、列番号を指定して範囲内のセルに値を一括設定する方法を紹介します。
手順:
- 先ほどと同じように、開発タブからVisual Basic Editorを開き、標準モジュールを挿入します。
- コードウィンドウに、以下のコードをコピー&ペーストしてください。
Sub SetValue()
Range(Cells(2, 2), Cells(8, 4)).Value2 = "Hello!"
End Sub
コードのポイント:
- Cells(2,2) = 2行目・2列目(セルB2)=範囲の起点
- Cells(8,4) = 8行目・4列目(セルD8)=範囲の終点
コードの準備ができたら実行しましょう。

- マクロを実行すると、B2~D8 のすべてのセルに「Hello!」という文字列が入力されます。

関連記事: 行番号と列番号でRangeを設定するExcel VBAの例
あわせて読みたい記事
- セルアドレスから行番号・列番号を取得するExcel VBA(4つの方法)
- 行番号と列番号でセルを参照する方法(4つの方法)
- 範囲内の各セルを処理するFor Each構文(3つの方法)
- 列番号を列記号(アルファベット)に変換する方法(3つの方法)
- VBAでRangeを設定する7つの実例
3. 別のワークシートの範囲を列番号で選択するVBAコード
ここでは、アクティブなシート以外のワークシートに対して、列番号を指定してセル範囲を選択する方法を解説します。
手順:
- 同様に、Visual Basic Editorを開いて標準モジュールを挿入します。
- コードウィンドウに、以下のコードを貼り付けてください。
Sub FixedRange()
Dim iRng As Range
Dim iSheet As Worksheet
Set iSheet = Worksheets("Range") '対象のワークシート名を指定
With iSheet
.Cells(1, 7).Select 'ワークシート上のG1セルを選択
Set iRng = .Range(.Cells(3, 3), .Cells(7, 6))
End With
iRng.Select 'ワークシート上のC3:F7の範囲を選択
End Sub
コードのポイント:
- Cells(3,3) = 3行目・3列目(セルC3)=範囲の起点
- Cells(7,6) = 7行目・6列目(セルF7)=範囲の終点
コードの準備ができました。

- コードを実行すると、「Range」という名前のワークシート上の C3~F7 のセル範囲が、指定した列番号に基づいて選択されます(下図参照)。

関連記事: 列番号を列記号に変換するVBA(3つの方法)
4. 範囲内の最終列番号を取得するVBAコード
このセクションでは、アクティブな範囲の中で最も右側の列番号を取得するVBAコードを紹介します。
以下のように、セルA1~D10にデータがあるデータセットを想定します。この範囲の最終列番号を抽出し、「Return」シートのセルF5に表示させます。
手順:
- 同じ要領でVisual Basic Editorを開き、標準モジュールを挿入します。
- コードウィンドウに、以下のコードをコピー&ペーストしてください。
Sub ReturnLastColumnInRange()
'変数の宣言
Dim iSheet As Worksheet
Dim iRng As Range
Set iWS = Worksheets("Return") '対象のワークシートを指定
Set iRng = iWS.Range("A1:D10") '範囲を設定
'最終列番号をセルに返す
iWS.Range("F5") = iRng.Column + iRng.Columns.Count - 1
End Sub
コードの準備が整いました。

- マクロを実行すると、セルF5に最終列番号である「4」が表示されます。

関連記事: 一致したセルの列番号を返す方法(5つの便利な方法)
VBAでRangeを設定するメリット
- 実装がとても簡単で、初心者でもすぐに使いこなせます。
- Rangeオブジェクトの引数は固定されていないため、用途に合わせて自由に行番号や列番号を変更できます。
- 複数の引数を渡すことができ、柔軟な範囲指定が可能です。
注意点
- VBAではCellsプロパティを使ってRangeを設定することもできます。状況に応じて使い分けましょう。
- オブジェクト変数には、必ずSetキーワードを使ってオブジェクトへの参照を代入する必要があります。Setを忘れると実行時エラーになるので注意してください。
まとめ
この記事では、Excel VBAで列番号を指定してRangeを操作し、範囲の選択・値の設定・別シートの操作・最終列番号の取得を行う4つの方法を解説しました。本記事が皆さんの業務効率化に役立てば幸いです。内容についてご不明な点があれば、お気軽にお問い合わせください。
関連記事
- セルの値に基づいて範囲を選択するVBA(7つの方法)
- Excel VBAで範囲を別シートにコピーする最も簡単な8つの方法
- Excel VBAの「インデックス有効範囲にありません」エラーの原因と5つの解決策
- 【解決済み】Excelの列見出しが数字(A,B,Cではなく1,2,3)になっているときの対処法
- 列記号を列番号に変換するチャートの作成方法(4つの方法)
-
Excelの「データ分析(Analyze Data)」機能の使い方|初心者向け5つの簡単ステップ
Microsoft Excelで作業をしていると、データをわかりやすく可視化したり、数式を使って結果を求めたりするのが難しく感じることがあります。そんな悩みを解決してくれるのが、Excelに搭載された「データ分析(Analyze Data)」という強力な機能です。この機能を使えば、あらゆる種類の答えを手軽に見つけることができます。本記事では、Excelの「データ分析」機能の具体的な使い方を詳しく解説します。 Excelの「データ分析」機能とは? 「データ分析(Analyze Data)」機能は、ビジュアルなグラフやピボットテーブルを表示するために使われる機能です。質問ボックスから回答を得ること
-
Excelで行数を制限する3つの効果的な方法
この記事では、Excelで行数を制限する方法をご紹介します。Excelのワークシートには1,048,576行×16,384列ものセルが用意されていますが、実際の作業でそのすべてが必要になることはほとんどありません。データセットの規模が小さい場合、行数を制限することで、より見やすく使いやすい作業環境を整えることができます。本記事では、Excelワークシートの行数を制限するための基本的なテクニックを3つ解説します。 Excelで行数を制限する3つの効果的な方法 ここでは、食料品店の売上情報を含むデータセットを例に説明します。店舗で扱う商品点数はそれほど多くないため、合計売上や利益を計算する