【VBA入門】RangeとCellsの違いについて

VBA RangeとCellsの違いについて
  • URLをコピーしました!

VBAを使ってEXCEL上で何かを自動化するとき
EXCELのセルをどのように取り扱うか理解する必要があります。

ところが、RangeだったりCellsだったり、セルを指定する方法がどちらも似ており
使い方がいまいちよくわからない方もおられるのではないでしょうか。

この記事ではRangeとCellsの使い方を初心者にもわかりやすく解説していきたいと思います。

この記事を読めばわかるようになること

  1. RangeとCellsの違いについて
  2. RangeとCellsの使用する場面に応じた実際のコーディング方法
目次

VBAでセルを選択するということは?・・・

VBAでセルを選択するイメージ図

みなさんがEXCELを使う時に無意識にセルをマウスで操作してセル選択していますよね。

同じようにVBAでセルを操作するには、RangeプロパティとCellsプロパティを理解する必要があります。

実際にRangeプロパティとCellsプロパティでセルを選択する際の書き方をみてみましょう。

Rangeプロパティでセルを選択

  ①単体のセル選択する方法 
   例)A1セルを選択
     Range(“A1”).Select

  ②複数セル範囲選択する方法
   例)A1セルからE5セルまでの範囲を選択
     Range(“A1:E5”).Select

  ③行や列全体を選択する方法
   例)1行目を選択
     Range(“1:1”).Select

   例)1行目から5行目を選択
     Range(“1:5”).Select

   例)A列を選択
     Range(“A:A”).Select

   例)A列からC列を選択
     Range(“A:C”).Select

Cellsプロパティでセルを選択

  ①単体(ひとつ)のセル選択する方法 
   例)A1セルを選択
     Cells(1,1).Select

  ②セル全体(シート全体)を選択する方法
   Cells.Select

RangeプロパティとCellsプロパティの違いは?

  両者には次の特色があります。

  ・Rangeプロパティ
   複数のセルを範囲指定して選択することが可能。
   複数の範囲が指定可能。

  ・Cellsプロパティ
   参照できるのは、特定の単体のセル、もしくはシート全体(全セル)の指定が可能。
   位置の特定に変数を用いることが可能。

RangeとCellsの使い分けについて

  ・Rangeとは
    例えばA1からE10のセルを黄色に書式設定する場合は、

    マウスでAからE10までドラッグして範囲指定して
    
    マウスで右クリック⇒

    書式設定から「塗りつぶし」で色を黄色に設定しますよね。

    この場合、VBAでは範囲を指定する操作をRangeプロパティを使い、

    コーディングすることができます。


  ・Cellsとは
    Cellsは、ひとつのセルを個別に選択していく時に使うプロパティです。

    具体的にはCells(3,2)のように、行と列のインデックス番号を指定して、

    セルの位置を特定します。

Rangeを用いたコーディング方法

Rangeを用いたコーディングのイメージ図

Rangeには様々なプロパティやメソッドが用意されています。

ここでは一例として

ValueプロパティとClearメソッドのコーディング事例を紹介します。

RangeオブジェクトのValueプロパティで値を取得、値を変更する方法

Valueプロパティを使用することにより、セルの値を設定することがでます。
(コーディング事例)


Sub Range_sample_1()

    Range("A1:A5").Value = "VBA"
    Range("B1:B5").Value = "学習"
    
End Sub

では実際にVBEを起動して、実行してみましょう。
実行結果は、こうなります。
A1からB5までそれぞれ値を設定することができました!

Range.valueプロパティへのコーディング実行結果①

次は、Valueプロパティを使用することにより、セルの値を取得する事例です。
(コーディング事例)

Sub Range_sample_2()

    Range("A1").Value = "Hello World!"
  MsgBox Range("A1").Value

End Sub

ではVBAを実行してみましょう。
A1に”Hello World!” を設定し、
メッセージボックスでA1のセルの値を取り出せました!

Range.valueプロパティへのコーディング実行結果②

RangeオブジェクトのClearメソッドで指定したセル範囲をクリアする方法

Clearメソッドはセルの内容をすべてクリアするメソッドです。


Sub Range_sample_3()

    Range("C3:D5").Clear

End Sub

では実行してみましょう。
実行前のシートの内容が、下の状態となります。

<実行前>

実行前のRangeオブジェクトのClearメソッドのイメージ図

<実行後>

実行後のRangeオブジェクトのClearメソッドのイメージ図

セルC3からD5までの範囲が書式と値がすべてクリアされました!

Cellsを用いたコーディング方法

Cellsを用いたコーディング方法

Cellsの最も大きなメリットは、ズバリ!引数に変数を使用することができる点です。

(コーディング事例)
 A列の1行目から30行目まで、番号(項番)を設定してみます。

Sub cells_sample_1()

 Dim cnt As Integer

   For cnt = 1 To 30
     Cells(cnt,1) = cnt
   Next cnt

End Sub

変数や繰り返し処理を用いたコーディングを行うときにCellsプロパティは威力を発揮します!
では早速、コードを実行してみましょう。

Cellsを用いたコーディング結果の図

A列に1から30まで項番を付与することができました!


まとめ

RangeとCellsの基本的な機能のまとめ

RangeとCellsの基本的な機能について解説しました。

Excelの操作においてセルを範囲選択することや、

特定のセルに値を設定・編集したりすることが多々ありますので

RangeとCellsを理解すればよりいっそうVBAへの理解が深まるはずです。

今回は一部分しか内容に触れませんでしたが、

その他にもたくさんのプロパティやメソッドが用意されています。

是非、みなさんもコーディングしてみて実際に動かして試してみてください!

この記事が気に入ったら
いいねしてね!

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