VBA RangeとCellsの使い方徹底解説|範囲指定、動的操作、複数範囲、配列の応用

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
RangeとCellsを使いこなす方法

「エクセルVBAでセルを操作したいけど、「Range」と「Cells」ってどう使い分けるんだろう…」
そんな疑問を持っていませんか?


・「Range」と「Cells」どちらを使えばいいのか、よくわからない…

・動的にセル範囲を操作したいが、うまくいかない

・VBA初心者でも簡単にセル範囲を指定できる方法を知りたい

この記事では、VBAの「RangeとCellsの使い方」について
解説します!


この記事では、VBAの基本である「Range」と「Cells」を使いセルを操作する方法について詳しく解説します。

これを読めば、 「セルにデータを入れたいけどどう指定すればいいかわからない…」 という初心者の悩みがスッキリ解消します!
例えば、 「一度に広い範囲にデータを入れる」 とか、 「指定した場所にだけデータを入力する」 といった操作が簡単にできるようになります。

この記事では、初心者向けに「基本的な使い方」から「業務で役立つ応用例」までわかりやすく解説します!
「Range」と「Cells」をマスターして、Excel作業をもっと効率化しましょう。


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度
目次

この記事を見て「できるようになる」こと

この記事を読むことで、以下のことができるようになります。

VBA初心者必見!「Range」と「Cells」の違いを比較して範囲指定をマスターしよう

Excel VBAでセル操作をする際、欠かせないのが「Range」と「Cells」です。
でも、「どちらを使えばいいのか」 や 「違いがよくわからない」 と感じていませんか?

ここでは「Range」と「Cells」の違いを比較表でわかりやすく整理しました。
使い分けをマスターすれば、セル範囲の指定がもっと簡単になります!

「Range」と「Cells」の違い一覧

スクロールできます
項目RangeCells
主な用途複数のセルやセル範囲を一括で指定・操作特定のセルを正確に指定
(行番号×列番号)
指定方法A1形式(例: Range("A1:C3")行番号と列番号を数値で指定
(例: Cells(1, 1)
利点広範囲を一度に操作可能、
複数の非連続範囲をまとめて指定可能
動的なセル指定ループ処理が得意
適した場面・ 連続したセル範囲を操作する場合
・ 複数範囲を一括操作したい場合
・ 行列番号を使ってセルを動的に
  操作する場合
・ ループ処理で効率化したい場合
応用例Range("A1:C3").Value = "Hello"
→ A1~C3にデータ入力
Cells(1, 1).Value = "Hello"
→ A1にデータ入力
組み合わせの例Range(Cells(1, 1), Cells(3, 3)).Value = "Data"
→ A1~C3にデータ入力

「Range」と「Cells」の使い分けポイント

使い分けのポイント
  • 広範囲の操作には「Range」がおすすめ  「Range」の解説を見る
    • 連続したセル範囲名前付き範囲を指定したい場合は「Range」を使いましょう。
      複数の範囲を一括で操作できます。
  • 動的な操作には「Cells」がおすすめ  「Cells」の解説を見る
    • 行番号や列番号を使った細かい指定や、ループ処理での自動化には「Cells」が便利です。
スポンサーリンク

「Range」とは?|Excel VBAの基本「範囲指定」でセル操作を始めよう!

「Range」は、Excel VBAで特定のセルやセル範囲を指定するための基本的なオブジェクトです。

このオブジェクトを使うと、 複数のセルを一括操作 したり、 データ入力や取得フォーマットの変更 などが簡単に行えます。

Rangeの基本構成について

Rangeの構成
設定解説
  • セル範囲
    • 操作対象となるセルセル範囲を指定します。

      セル範囲はExcelのセル参照と同じ形式で指定し、単一セルの場合は「A1」のように、複数のセルを対象とする場合は「A1:C3」のように記述します。
      セル範囲の指定により、複数のセルを一括で操作することが可能です。

Rangeの活用ポイント

特定の範囲に一括で書式を適用する場合。

Range("A1:B5").Value = "Hello"

このコードでは、セル範囲「A1」から「B5」までのすべてのセルに「Hello」という文字列を入力します。
これにより、一度に複数のセルを操作でき、効率的なデータ処理を実行することができます。

Rangeの使用方法について解説

より詳しい情報は、Microsoft公式のRange オブジェクト (Excel)を参照してください。

「Cells」とは?|Excel VBAで行番号と列番号を使ってセルを正確に指定する方法

「Cells」は、Excel VBAで 行番号 と 列番号 を使って特定のセルを正確に指定するためのプロパティです。

このプロパティを活用することで、 動的なセル操作 や ループ処理 が簡単になります。
「Range」とは異なり、 単一のセル指定 に最適です!

Cellsの基本構成と使い方

Cellsの構成
設定解説
  • 行番号
    • 対象となる行の番号を指定します。
      行番号は、指定するセルがシートのどの行に位置するかを表します。
      例えば、「1」を指定すると「1行目」が対象になります。
  • 列番号
    • 対象となる列の番号を指定します。
      列番号は、指定するセルがシートのどの列に位置するかを表します。
      例えば、「1」を指定すると「A列」が対象になります。

Cellsの使用方法について

1つのセルを指定の場合

Cells(1, 1).Value = "Hello"

このコードは、シートの「A1」セルに「Hello」という文字列を入力します。
「行番号」と「列番号」を使ってセルを正確に指定できるため、動的なデータ操作が可能です。
たとえば、ループ処理でセルを繰り返し変更する際にも便利です。

Cellsの使用方法についてについて解説

Cellsをループ処理で指定する場合

VBAのCellsプロパティを活用することで、変数を使って動的にセルを指定することも可能です。
これにより、大量のデータ操作や自動処理を行う際に非常に効果的です。

For i = 1 To 10
    Cells(i, 1).Value = i
Next i
Cellsをループ処理で指定する場合について解説

このコードは、シートの「A1」から「A10」までに「1から10」の値を順番に入力します。
Cells(i, 1)を使って行番号を動的に指定しているため、ループのたびに異なるセルに値を入力できます。

より詳しい情報は、Microsoft公式のWorksheet.Cells プロパティ (Excel)を参照してください。

「Range」と「Cells」の使い分け | どちらを使うべきか?

「Range」と「Cells」はどちらもセル範囲を指定するための方法ですが、使い分けには注意が必要です。

以下の場面で、適切に使い分けることが重要です。

VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?

そんな方には、UdemyのVBA講座がおすすめです。

動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べるVBA講座はこちら  /

CHECK

「Range」での指定が適している場面

「Range」は、複数のセルをまとめて指定したり、大きなセル範囲を一度に操作したい場合に最適なオブジェクトです。

特に、連続したセル範囲や、名前付きの範囲を操作する際に便利です。
また、範囲全体に同じ操作を適用したり、複数のセルを一括で指定したいときにも有効です。

例えば、特定の範囲にデータを入力したり、範囲内のフォーマットを一括で変更するなど、広範囲なデータ操作を効率化できるのが大きな利点です。

よく使われる場面は以下の通りです。

ケース1: 連続する複数セルを操作するとき

「A1」から「B5」までのセルに同じ値を入力したい場合は、以下のように記載します。

Range("A1:B5").Value = "Hello"

このコードは、「A1」から「B5」までのすべてのセルに「Hello」という値を入力します。
セル範囲全体を一度に指定するため、手間がかかりません。

ケース1: 連続する複数セルを操作するときの処理結果

ケース2: シート全体や大きな範囲を一度に操作するとき

シート全体をクリアしたい場合は、以下のように記載します。

Range("A1:Z100").Clear

ここでは、「A1」から「Z100」までのセルを一度にクリアします。
手動で一つ一つクリアする必要がないため、効率的です。

クリアの方法については別記事で解説をしています。

ケース2: シート全体や大きな範囲を一度に操作するときの処理結果

ケース3: 名前付き範囲を操作するとき

「名前の定義」で名前を変更したセルを操作する場合、以下のように記載します。

Range("MyRange").Value = "Data"

「MyRange」という名前が付けられた範囲に、すべて「Data」という値を入力します。
「名前の定義」を使用することで、セルの場所が変わってもコードを修正する必要がなくなります。

ケース3: 名前付き範囲を操作するときの結果

ケース4: 複数の非連続セルを一度に操作するとき

複数の特定のセルに値を入力したい場合は、以下のように記載します。

Range("A1, C1, E1").Value = "サンプル"

このコードは、「A1」、「C1」、「E1」の各セルに「サンプル」を入力します。
非連続のセルを一度に操作できるのは、Rangeの強みです。

ケース4: 複数の非連続セルを一度に操作するときの処理結果

ケース5: 行や列全体を操作するとき

特定の行や列を一度にクリアしたい場合は、以下のように記載します。

列の場合

Range("A:A").ClearContents

行の場合

Range("1:1").ClearContents

このコードは、「A列全体」や「1行全体」の内容をクリアします。
範囲指定で行や列を操作する場合にも、Rangeが便利です。

クリアの方法については別記事で解説をしています。

ケース5: 行や列全体を操作するときの処理結果
CHECK

「Cells」の指定が適している場面

「Cells」は、特定のセルを正確に指定したり、行番号や列番号を使って動的にセルを操作する際に最適なプロパティです。

特に、ループ処理や変数を使ってセルの位置を柔軟に変更したい場合に便利です。
また、セルを「A1」などの形式ではなく、行番号と列番号で指定したいときにも頻繁に使われます。

これにより、特定のセル操作だけでなく、データの自動入力や範囲指定を動的に行えるのが大きな利点です。

よく使われる場面は以下の通りです。

ケース1: 動的にセル範囲を指定するとき

ループ処理でセルの行や列を動的に変更しながら操作したい場合は、以下のように記載します。

Dim i As Long

For i = 1 To 10
    Cells(i, 1).Value = i
Next i

このコードは、「A1」から「A10」までのセルに「1」から「10」までの値を順番に入力します。
Cells(i, 1)を使うことで、ループ処理の中で行番号を動的に変更でき、効率的にセルを操作できます。

ケース1: 動的にセルを指定するときの結果

ケース2: 行列番号で正確にセルを指定するとき

具体的な「行番号」と「列番号」を使って、特定のセルにデータを入力したい場合は、以下のように記載します。

Cells(2, 1).Value = "Name"
Cells(2, 2).Value = "Age"

このコードでは、2行目のA列に「Name」、B列に「Age」という値を入力します。
行番号と列番号を直接指定することで、セルの位置を正確にコントロールできます。

ケース2: 行列番号で正確にセルを指定するときの結果

ケース3: 変数を使ってセルを指定するとき

あらかじめ「行」や「列」を変数に格納して起き、セルを操作したい場合は、以下のように記載します。

Dim rowNum As Long
Dim colNum As Long

rowNum = 2
colNum = 3
Cells(rowNum, colNum).Value = "Test"

このコードでは、「rowNum」と「colNum」で指定されたセル(ここではC3)に「Test」という値を入力します。
変数を使うことで、セルの位置を柔軟に変更することができます。

ケース3: 変数を使ってセルを指定するときの結果

ケース4: 列をアルファベットで指定するとき

列をアルファベットで指定したい場合は、以下のように記載します。

Cells(2, Columns("C").Column).Value = "Header"

このコードでは、2行目のC列(セルC2)に「Header」という値を入力します。
列をアルファベットで指定することで、可読性が向上し、セルの位置をより直感的に理解できるようになります。

ケース4: 列をアルファベットで指定するときの結果
CHECK

「Range」と「Cells」を組み合わせての指定が適している場面

Excel VBAでは、「Range」と「Cells」を組み合わせることで、より柔軟にセル範囲を指定することが可能です。
この方法を使えば、動的に範囲を設定できるため、特に自動化の際に役立ちます。

例えば、次のコードでは「A1」から「B2」までのセル範囲を指定しています。

Range(Cells(1, 1), Cells(2, 2)).Value = "Data"

このように、「Range」と「Cells」を組み合わせて範囲を指定することで、複数のセル範囲に一度でデータを入力したり、フォーマットを変更したりすることが可能です。

よく使われる場面は以下の通りです。

ケース1: 動的にセル範囲を指定したいとき

ループ処理や条件に応じて、開始セルと終了セルを動的に指定する場合は、以下のように記載します。

Dim startRow As Long, endRow As Long

startRow = 1
endRow = 5
Range(Cells(startRow, 1), Cells(endRow, 3)).Value = "Data"

このコードでは、「A1」から「C5」までの範囲に「Data」という値を入力します。
Cellsを使うことで複数範囲の操作や動的な範囲指定にも応用可能です。

ケース1: 動的にセル範囲を指定したいときの結果

ケース2: 配列データを一括でセル範囲に貼り付けたいとき

配列内のデータを一度に特定のセル範囲に入力する場合は、以下のように記載します。

Dim myArray As Variant

myArray = Array("A", "B", "C", "D", "E")
Range(Cells(1, 1), Cells(1, UBound(myArray) + 1)).Value = myArray

このコードでは、配列「myArray」のデータを「A1」から「E1」までのセルに一括で貼り付けます。
「Range」と「Cells」を組み合わせることで、配列の内容を効率的にセル範囲に展開できます。

ケース2: 配列データを一括でセル範囲に貼り付けたいときの結果

ケース3: 条件に応じて動的に範囲を選択し、その範囲を操作したいとき

データが変動するシートで、範囲を動的に選択し、操作する必要がある場合。

Dim lastRow As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(1, 1), Cells(lastRow, 3)).Interior.Color = RGB(255, 255, 0)

このコードでは、A列の最終行までを含む範囲に黄色の背景色を設定します。
「Range」と「Cells」を組み合わせることで、シート内の変動も動的に対応できます。

ケース3: 条件に応じて動的に範囲を選択し、その範囲を操作したいときの結果
スポンサーリンク

「Range」と「Cells」を使用する際の注意ポイント

「Range」と「Cells」を使用する際には、いくつかの注意点があります。

「行番号」と「列番号」の指定ミス

「Cells(1, 1)」は「A1」セルを指しますが、「行番号」や「列番号」を間違えて指定すると、予期しないセルを操作してしまうことがあります。

例えば、「行番号」と「列番号」を逆に入力してしまったり、「列番号」を数値で指定する際にアルファベットとのずれが生じることがあるため注意しましょう。

特にループ処理の際は、範囲外のセルにアクセスしてしまわないよう注意が必要です。

オブジェクト変数 (Range型) の設定ミス

「Range」や「Cells」を使う際には、オブジェクト変数を使用してセル範囲を動的に指定することが可能です。
ただし、オブジェクト変数の範囲が適切に設定されていないと、エラーの原因になります。

Dim rng As Range
Set rng = Range(Cells(1, 1), Cells(5, 5))
rng.Value = "サンプル"

このコードは、「A1」から「E5」までの範囲に「サンプル」を入力するコードです。
オブジェクト変数「rng」に範囲を設定してから、その範囲に対して操作を行っています。

オブジェクト変数詳細は別記事にまとめていますので、ご覧ください。

あわせて読みたい
エクセルVBAでオブジェクト変数を使う方法 | マクロの基本と応用 「VBAのオブジェクト変数って何??」このように悩んだことはありませんか? ・オブジェクト変数ってなに?・「Set」や「With」の違いってなんなの?・最後に「Nothing...
スポンサーリンク

まとめ: RangeとCellsの効果的な活用

「Range」と「Cells」を正しく使い分けることは、Excel VBAでのセル操作を効率的に行うための基本です。

この技術を習得することで、データ操作の柔軟性が増し、より効果的に業務を進めることができます。

ポイントのおさらい

さらに学ぶために

「Range」と「Cells」の基本を学んだら、次はこれらを活用した他のVBA機能を学びましょう。

さらに深い理解を得るために、他のVBAの記事やガイドラインを参照してください。

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「JavaScr...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次