【Excelマクロ】RangeとCellsの違いを理解してセルに文字を入力する【VBA】
Excelマクロ(VBA)でプログラムを作成する上で指定したセルに好きな文字を入力することは必須スキルです。
計算したデータや抽出したデータを出力する際にセルに文字を出力することになります。
各出力方法の長所と短所を理解することで効率の良いVBAを作成しましょう!
この記事では画像とテストコードを多めで説明します。
一緒に確認していきましょう!
マクロの編集方法がわからない人はこちらの記事から確認してみてください
2種類の入力方法
セルに文字を入力するには2種類の入力方法を選択することができます。
- Rangeオブジェクトを使用する方法
- Cellsオブジェクトを使用する方法
どちらを使用してもセルに文字を入力することができます。しかし使用するオブジェクトにより長所や短所があるので長所と短所を理解することが重要になります。
使用方法(セルの指定方法)も違うのでテストプログラムを確認して使用方法を理解してみましょう!
次からは各オブジェクトを具体的に確認していきます。
Rangeオブジェクトを使用する方法
Rangeオブジェクトを使用する方法やプログラム例の説明を行います。
長所と短所もまとめてみますので合わせて確認してみましょう。
使用方法
この時の指定するセルは“A1″や"C1″などの一般的にExcelのセルを指示するときに指定される値です。
また、引数は数値型ではなく文字列型で指定する必要があります。
そのまま指定する場合はダブルクォーテーション(“)で囲む必要があります。
Rangeオブジェクトを使用する際の引数はポイントなのでチェックしておきましょう。
使用方法の例ではRangeオブジェクトで指定したセルに入力したい文字を入力するものになっています。
プログラム例
プログラム例の確認を行いましょう!
A1のセルに"文字入力のテスト"と入力するプログラムを作成してみます。
Sub writeRange()
'文字の入力テストです
Range("A1") = "文字入力のテスト"
End Sub
4行目でRangeオブジェクトを使用してます。
指定したセルに"文字入力のテスト"という文字列を入力してます。
他のセルを指定する場合は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オブジェクトを使用することで複数セルを選択することが可能です。
Excelに慣れている人はセルの指定が簡単
2つめの長所にはセルの指定が簡単ということが挙げられます。
テストプログラムで確認した通り、"A1″や"B1″とセルを選択することが可能です。
この選択方法はExcel関数での指定方法(A1形式)と同一なためExcelに慣れている人にはセルの指定が簡単であると言えます。
セルの指定方法をまとめてみましたので確認してみてください。
Rangeを使用する短所
Rangeオブジェクトを使用する短所を確認してみましょう
短所として1点あげられます。
- 繰り返し文で出力する場合指定が難しい
詳しく確認していきます
繰り返し文の指定が難しい
繰り返し文の中で1つずつセルを変更しながら出力する場合があります。
その場合はセルの指定を1セルずつ変更していくのですがセルの指定が難しくなります。
テストプログラムを用意したので確認してみましょう
Sub WriteRange()
'例
dim i as Integer
For i = 1 to 10
Range("A"&i) = "文字入力のテスト"
Next i
End sub
テストプログラムでのRangeの引数をみていきましょう
上記のように文字列結合されますが後述するCellsオブジェクトを使用すれば文字列結合を行うことなく"A1″を指示することができます。
また、テストプログラムでは行(A1〜A10)をカウントアップしていますが、Rangeプロパティを使用すると列(A〜Z)のカウントアップを行うことができません。
繰り返し分と一緒に使用する場合はCellsオブジェクトを使用するようにしましょう!
Cellsオブジェクトを使用する方法
次にCellsオブジェクトを使用したセルの指定方法を確認してみましょう!
Rangeオブジェクトと比較しながら確認するとわかりやすいです。
使用方法
列の指定と行の指定は数値型の数字で指定します。
すなわちダブルクォーテーション(")を入力する必要がありません。
列と行を数値型の数字で指定できることがCellsオブジェクトの特徴となっています。
プログラム例
プログラム例を確認していきましょう。
処理の内容はRangeオブジェクトの時と同じ内容です。
A1のセルに"文字入力のテスト"という文字を入力するプログラムです。
Sub writeCells()
'文字の入力テストです
Cells(1,1) = "文字入力のテスト"
End Sub
4行目でCellsオブジェクトを使用してます
指定したセルに “文字入力のテスト"を入力しています。
別のセルを指定したい時は引数を変更することで別のセルを指定することが可能です
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オブジェクトを使用するようにしましょう!
Cellsオブジェクトを使用する短所
Cellsオブジェクトを使用する際の短所の確認をしましょう。
2点の短所があります。
- セルの範囲指定を行えない
- A1単位でセルを指定できないので指定場所がわかりづらい
2つある短所を一つずつ確認してみましょう
セルの範囲指定を行えない
や
など、セルを範囲指定で選択することができません。
Cellsオブジェクトを使用する場合は範囲指定を行うことができないためRageオブジェクトを使用するしかありません。
セルを範囲指定する際はRangeオブジェクトを使用しましょう!
セルの指定場所がわかりづらい
この指定をみてすぐに"E10″のセルだとわかる人は少ないと思います。
私
筆者も行と列の指定はいまだに慣れることができてません。
このようなことからセルの指定場所がわかりづらいということが短所として上がります。
下記のようなシートを用意して都度確認することが良いでしょう
まとめ
いかがだったでしょうか?
エクセルマクロ(VBA)でのセル指定方法を2種類確認してみました。セルの指定をすることによって特定のセルに文字を入力することができます。
- Rangeオブジェクトを使用する方法
- Cellsオブジェクトを使用する方法
セルの指定方法によって長所と短所があるります。セルの指定方法を使い分けることで効率の良いVBAを作成しましょう!
- 繰り返し処理に向いている
- 指定したセルがわかりやすい
- セルを範囲で指定することができる
皆様により良いVBAライフがおとずれますように!
では、次回の記事でお会いしましょう
VBA初心者におすすめの記事
ディスカッション
コメント一覧
まだ、コメントがありません