【Excelマクロ】RangeとCellsの違いを理解してセルに文字を入力する【VBA】

2020年5月29日

RangeCellsの違いを理解して使用していますか?

Excelマクロ(VBA)でプログラムを作成する上で指定したセルに好きな文字を入力することは必須スキルです。
計算したデータや抽出したデータを出力する際にセルに文字を出力することになります。

セルに出力する方法は2種類あります

各出力方法の長所と短所を理解することで効率の良いVBAを作成しましょう!

この記事では画像とテストコードを多めで説明します。
一緒に確認していきましょう!

この記事を読むと
  • 2種類(RangeCells)でセルに文字入力ができるようになる
  • 各種類の長所と短所が理解できる
  • 効率の良いVBAを作成することができる

マクロの編集方法がわからない人はこちらの記事から確認してみてください

2種類の入力方法

rangeかcellsか

セルに文字を入力するには2種類の入力方法を選択することができます。

  • Rangeオブジェクトを使用する方法
  • Cellsオブジェクトを使用する方法

どちらを使用してもセルに文字を入力することができます。しかし使用するオブジェクトにより長所や短所があるので長所と短所を理解することが重要になります。

使用方法(セルの指定方法)も違うのでテストプログラムを確認して使用方法を理解してみましょう!

次からは各オブジェクトを具体的に確認していきます。

Rangeオブジェクトを使用する方法

range

Rangeオブジェクトを使用する方法やプログラム例の説明を行います。
長所と短所もまとめてみますので合わせて確認してみましょう。

使用方法

入力方法
Range(“入力したいセル") = “入力したい文字"
Rangeの引数に入力したいセルを指定します。

この時の指定するセルは“A1″や"C1″などの一般的にExcelのセルを指示するときに指定される値です。
また、引数は数値型ではなく文字列型で指定する必要があります。

そのまま指定する場合はダブルクォーテーション(“)で囲む必要があります。
Rangeオブジェクトを使用する際の引数はポイントなのでチェックしておきましょう。

使用方法の例ではRangeオブジェクトで指定したセルに入力したい文字を入力するものになっています。

プログラム例

プログラム例の確認を行いましょう!
A1のセルに"文字入力のテスト"と入力するプログラムを作成してみます。

Sub writeRange()

'文字の入力テストです
Range("A1") = "文字入力のテスト"

End Sub

4行目でRangeオブジェクトを使用してます。

Range(“A1")でA1のセルを指定してます

指定したセルに"文字入力のテスト"という文字列を入力してます。
他のセルを指定する場合はRangeの引数を変更することで他のセルの指定が可能です。

Rangeを使用する長所

Rangeを使用して書き込みを行う時の長所を確認してみましょう。
長所は2つあげられます

  • 複数セルの選択ができる
  • Excelに慣れている場合はセルの指定が簡単

一つずつ確認してみましょう

複数セルの選択ができる

1つ目の長所についてサンプルプログラムとともに確認してみましょう
例1:A列とB列にを指定する例です。
例2:C1からE5までを指定する例です。

Sub WriteRange()

'例1
Range("A:B") = "文字入力のテスト"
'例2
Range("C1:E5") = "文字入力のテスト"


End sub

例で確認した通りRangeオブジェクトを使用することで複数セルを選択することが可能です。

後述するCellsオブジェクトをしても複数セルの選択を行うことができないため複数セルを指定する場合はRangeオブジェクトを使用する必要があります。

Excelに慣れている人はセルの指定が簡単

2つめの長所にはセルの指定が簡単ということが挙げられます。

テストプログラムで確認した通り、"A1″や"B1″とセルを選択することが可能です。
この選択方法はExcel関数での指定方法(A1形式)と同一なためExcelに慣れている人にはセルの指定が簡単であると言えます。

セルの指定方法をまとめてみましたので確認してみてください。

Rangeの入力方法まとめ

Rangeを使用する短所

Rangeオブジェクトを使用する短所を確認してみましょう
短所として1点あげられます。

  1. 繰り返し文で出力する場合指定が難しい

詳しく確認していきます

繰り返し文の指定が難しい

繰り返し文の中で1つずつセルを変更しながら出力する場合があります。
その場合はセルの指定を1セルずつ変更していくのですがセルの指定が難しくなります

テストプログラムを用意したので確認してみましょう

Sub WriteRange()

'例
dim i as Integer
For i = 1 to 10
    Range("A"&i) = "文字入力のテスト"
Next i

End sub
forやDoを使用した繰り返し処理で使用する際、Rangeを使用する場合文字列結合が必要になります

テストプログラムでのRangeの引数をみていきましょう

Range(“A" & i) → Range(“A1") → "A1″のセル

上記のように文字列結合されますが後述するCellsオブジェクトを使用すれば文字列結合を行うことなく"A1″を指示することができます。

また、テストプログラムでは行(A1〜A10)をカウントアップしていますが、Rangeプロパティを使用すると列(A〜Z)のカウントアップを行うことができません

繰り返し分と一緒に使用する場合はCellsオブジェクトを使用するようにしましょう!

Cellsオブジェクトを使用する方法

Cells

次にCellsオブジェクトを使用したセルの指定方法を確認してみましょう!
Rangeオブジェクトと比較しながら確認するとわかりやすいです。

使用方法

入力方法
Cells(行の指定,列の指定) = “入力したい文字"
Cellsの引数に行の番号と列の番号を指定します

列の指定と行の指定は数値型の数字で指定します。
すなわちダブルクォーテーション(")を入力する必要がありません。

列と行を数値型の数字で指定できることがCellsオブジェクトの特徴となっています。

プログラム例

プログラム例を確認していきましょう。

処理の内容はRangeオブジェクトの時と同じ内容です。
A1のセルに"文字入力のテスト"という文字を入力するプログラムです。

Sub writeCells()

'文字の入力テストです
Cells(1,1) = "文字入力のテスト"

End Sub

4行目でCellsオブジェクトを使用してます

Cells(1,1)でA1のセルを指定してます

指定したセルに “文字入力のテスト"を入力しています。
別のセルを指定したい時は引数を変更することで別のセルを指定することが可能です

Cellsオブジェクトを使用する長所

Cellsオブジェクトを使用する際の長所を説明します
Rangeの短所と対応しますが1点あります

  • 繰り返しの処理が容易

詳しく確認してみましょう

繰り返しの処理が容易

For文やDo文を使用した繰り返し処理の内部処理でセルを変更しながら処理を行うことが簡単に指定ができます。
Rangeを使用した際は文字列結合が必要でしたがCellsを使用する場合は文字列結合を行う必要がありません。

プログラム例を確認してみましょう

Sub WriteCells()

'例
dim i as Integer
For i = 1 to 10
    Cells(1,i) = "文字入力のテスト"
Next i

End sub
Cells(i,1) → Cells(1,1) → "A1″のセル

を指定してます。
繰り返し処理を行う際は行または列をカウントアップするだけなので処理が楽になります。

繰り返し処理の一部でセルの指定を行う際はCellsオブジェクトを使用するようにしましょう!

Cellsオブジェクトを使用する短所

Cellsオブジェクトを使用する際の短所の確認をしましょう。
2点の短所があります。

  • セルの範囲指定を行えない
  • A1単位でセルを指定できないので指定場所がわかりづらい

2つある短所を一つずつ確認してみましょう

セルの範囲指定を行えない

A列の全てのセルを指定する

A3からE10のセルを選択する

など、セルを範囲指定で選択することができません。
Cellsオブジェクトを使用する場合は範囲指定を行うことができないためRageオブジェクトを使用するしかありません。

セルを範囲指定する際はRangeオブジェクトを使用しましょう!

セルの指定場所がわかりづらい

Cells(10,5)

この指定をみてすぐに"E10″のセルだとわかる人は少ないと思います。

筆者も行と列の指定はいまだに慣れることができてません。
このようなことからセルの指定場所がわかりづらいということが短所として上がります。

下記のようなシートを用意して都度確認することが良いでしょう

Cellsの入力方法まとめ

まとめ

まとめ

いかがだったでしょうか?

エクセルマクロ(VBA)でのセル指定方法を2種類確認してみました。セルの指定をすることによって特定のセルに文字を入力することができます。

  • Rangeオブジェクトを使用する方法
  • Cellsオブジェクトを使用する方法

セルの指定方法によって長所と短所があるります。セルの指定方法を使い分けることで効率の良いVBAを作成しましょう!

  • 繰り返し処理に向いている
  • 指定したセルがわかりやすい
  • セルを範囲で指定することができる

皆様により良いVBAライフがおとずれますように!
では、次回の記事でお会いしましょう

VBA初心者におすすめの記事