【Excel VBA】セルの指定方法まとめ!Range/Cellsで範囲指定も!

Excel VBAでセルを指定したいときはないでしょうか。

けど、そんな中で悩むことは、

・Excel VBAでセルを指定したいが方法がわからない
・Excel VBAでRange/Cellsを使い分ける方法がわからない

ですよね。

今回はそんなお悩みを解決する

・Excel VBAでセルを指定する方法
・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)のような使い方が望ましいといえるでしょう。

タカヒロ
タカヒロ
実はエク短ではRange(”A1:A” & i)のような使い方は多用しています…
使いやすいしわかりやすいですからね…
今後は繰り返し処理の場合は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)

タカヒロ
タカヒロ
件数カウントにColumns(“A:C”)を使用するとExcelの最終行までカウントされ処理が重くなりますので注意しましょう。

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でセルを指定する方法
・Excel VBAのRange/Cellsを使い分ける基準

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です