Excel VBAでセルを指定したいときはないでしょうか。
けど、そんな中で悩むことは、
・Excel VBAでRange/Cellsを使い分ける方法がわからない
ですよね。
今回はそんなお悩みを解決する
・Excel VBAのRange/Cellsを使い分ける基準
についてまとめます!
もくじ
Excel VBAでセルを指定する方法は4種類
Excel VBAでセルを指定する方法は4種類あります。RrangeまたはWorksheetオブジェクトのプロパティRange、Cells、Rows、Columnsで単体セルがらセル全体まで指定することができます。
オブジェクト | プロパティ | 説明 |
---|---|---|
RrangeまたはWorksheet | Range | セルまたはセル範囲を指定します。 例:A1を選択 Range(“A1”).Select |
Cells | 単体のセルを指定します。指定がない場合は全体セルになります。 例:A1を選択 Cells(1, 1).Select |
|
Rows | 行または複数行を指定します。 例:1~3行目を選択 Rows(“1:3”).Select |
|
Columns | 列または複数列を指定します。 例:A~C列目を選択 Columns(“A:C”).Select |
行/列全体を範囲指定したい場合はRows、Columnsの選択になります。
それ以外のセル単体から部分的選択、全体まではRange/Cellsを使い分けていく形となります。
Excel VBAのRange/Cellsを使い分ける基準
Excel VBAのRange/Cellsを使い分ける基準について説明をします。
範囲指定する場合はRange
Rangeはその名の通り範囲を指定できます。例えばA1:C3などです。
一方でCellsはセル単体を指定するプロパティで、番地で指定をする形となります。例えばA1セルでしたら行1番目、列1番目という形になります。
よってRange/Cellsを使い分ける基準の一つは範囲指定をするかによって分かれる結果となります。
繰り返し処理をする場合はCells
次にVBAでよく使う繰り返し処理の場合はどちらが最適でしょうか。
変数iで1から10まで繰り返すとなると、Cells(i,1)などの指定が可能ですので、Cellsのほうの選択となります。
Range(”A1:A” & i)というやり方をよくやりますが、きちんと使う場合はRange(“A1:A10”).Cells(i, 1)のような使い方が望ましいといえるでしょう。
使いやすいしわかりやすいですからね…
今後は繰り返し処理の場合はCellsを使おうと思います。
VBAで複数のセルを指定し値を取得する
VBAで複数のセルを指定し値を取得する方法について説明をします。
上記基準にあわせると使うプロパティはRangeとなります。
ただし、値を取得するのにFor文の繰り返し処理をおこないますので、Cellsも併せて使います。
サンプル表を用意しましょう。
この表の範囲をRangeプロパティへ指定し、値を取得していきます。
VBAコード
サンプルコードは以下の通りです。
Sub 複数のセルを指定し値を取得する()
'"A1:C6"の2行名から最終行までの数を繰り返します。
For i = 2 To Range("A1:C6").Rows.Count
'Range("A1:C6")の値をデバッグ出力します。
Debug.Print Range("A1:C6").Cells(i, 1)
Next
End Sub
VBAを実装する
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行する
VBAを実行してみましょう。
はい、イミディエイトウィンドウにA列の値が表示されましたね。
VBAの説明
項目名は除くため、'”A1:C6″の2行名から最終行までの数を繰り返します。
For i = 2 To Range("A1:C6").Rows.Count
‘Range(“A1:C6”)の値をデバッグ出力します。
Debug.Print Range("A1:C6").Cells(i, 1)
VBAで別シートの複数のセルを範囲指定し値を取得する
続いて、別シートの複数のセルを範囲指定し値を取得するVBAについて説明をします。
サンプルの表は前と同じものを使用しますが、今回対象とするシートは「Sheet2」です。
この2列目の値を取得していきます。
VBAコード
サンプルコードは以下の通りです。
Sub 指定シートの複数のセルを指定し値を取得する()
'指定シートの"A1:C11"の2行名から最終行までの数を繰り返します。
For i = 2 To Sheets("Sheet2").Range("A1:C11").Rows.Count
'指定シートのRange("A1:C11")の値をデバッグ出力します。
Debug.Print Sheets("Sheet2").Range("A1:C11").Cells(i, 2)
Next
End Sub
VBAを実行
VBAを実行してみましょう。
「Sheet2」シートの2列目の値が取得されていますね。
VBAの説明
前回のコードにSheetsコレクションに引数”Sheet2″を指定し、加えることによりシートを指定することができます。
For i = 2 To Sheets("Sheet2").Range("A1:C11").Rows.Count
Debug.Print Sheets("Sheet2").Range("A1:C11").Cells(i, 2)
VBAで複数行全体を指定し値を取得する
VBAで複数行全体を指定し値を取得する方法について説明をします。
サンプルの表は以下を使用し、1から6行目までを選択し、その3列目の値を出力していきます。
VBAコード
サンプルコードは以下の通りです。
Sub 複数の行を指定し値を取得する()
'Rows("1:6")の最終行までの数を繰り返します。
For i = 2 To Rows("1:6").Count
'Rows("1:6")の値をデバッグ出力します。
Debug.Print Rows("1:6").Cells(i, 3)
Next
End Sub
VBAを実行
VBAを実行してみましょう。
指定した複数行の3列目の値が取得されていますね。
VBAの説明
Rows(“1:6”)の最終行までの数を繰り返します。
For i = 2 To Rows("1:6").Count
Rows(“1:6”)の値をデバッグ出力します。
Debug.Print Rows("1:6").Cells(i, 3)
VBAで複数列全体を指定し値を取得する
VBAで複数列全体を指定し値を取得する方法について説明をします。
サンプルの表は同じく以下を使用し、A列からC列までを選択し、その3列目の値を出力していきます。
VBAコード
サンプルコードは以下の通りです。
Sub 複数の列を指定し値を取得する()
'Rows("1:6")の最終行までの数を繰り返します。
For i = 2 To Rows("1:6").Count
'Columns("A:C")の値をデバッグ出力します。
Debug.Print Columns("A:C").Cells(i, 3)
Next
End Sub
VBAを実行
VBAを実行してみましょう。
指定した複数列の3列目の値が取得されていますね。
VBAの説明
‘Rows(“1:6”)の最終行までの数を繰り返します。
For i = 2 To Rows("1:6").Count
‘Columns(“A:C”)の値をデバッグ出力します。
Debug.Print Columns("A:C").Cells(i, 3)
VBAで全セルを指定し値を取得する
VBAで全セルを指定し値を取得する方法について説明をします。
サンプルの表は同じく以下を使用し、全セルを選択し、その2列目の値を出力していきます。
VBAコード
サンプルコードは以下の通りです。
Sub 全セルを指定し値を取得する()
For i = 2 To 6
'全セルの内、指定セルの値をデバッグ出力します。
Debug.Print Cells.Cells(i, 3)
Next
End Sub
VBAを実行
VBAを実行してみましょう。
指定した複数列の3列目の値が取得されていますね。
VBAの説明
現在アクティブのシートにある全セルを指定する場合はCellsと指定するだけです。
全セルを選択する場合はselectメソッドを追加すればOKです。
Cells.Select
指定が簡単な分、最終行×最終列の領域を扱うことになり、メモリが足りなくなる可能性がありますので、その点ご注意ください。
全セルをCellsで指定し、その中のセルの値をデバッグ出力します。
Debug.Print Cells.Cells(i, 3)
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・Excel VBAのRange/Cellsを使い分ける基準
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す