スポンサードリンク

ExcelVBA
ExcelVBA

VBAを扱っていてセルの指定する際に

変数を使って指定をすることが多いです。

なので変数を使うCells、Rows、Columnsを使って指定をしています。

しかし、VBAではRangeを使わないと指定できない場合もあり

すべてをCells、Rows、Columnsで書くことは難しいです。

変数を使う時のCells、Rows、Columnsを使ってRangeを組み合わせたセル指定方法を

覚書としてまとめておきます。

スポンサードリンク

Rangeでの指定方法

Rangeでの指定方法は固定位置での指定になります。

通常は以下のように指定します。

  • Range(“A2”)・・・セル【A2】を指定
  • Range(“B1:C5”)・・・セル範囲【B1~C5】を指定
  • Range(“1:5”)・・・【1~5行目】を指定
  • Range(“A:C”)・・・【A~C列】を指定

また、名前の定義を使って指定する場合もあります。

『価格表』という名前でセル範囲【B2:D5】があった場合は

以下のように指定します。

  • Range(“価格表”)・・・セル範囲B2~D5を指定

通常は名前の定義を指定した場合はRangeのみでの使用になるため

ここからは固定位置での指定をCells、Rows、Columnsを使用した

セルの指定方法を書いていきます。

1つのセルの指定方法

1つのセルを指定する方法は以下のように書きます。

Cells(行,列)

例:セル【A2】を指定する場合
※Rangeの場合はRange(A2)

Cells(2,1)

と書きます。

変数iやjを使う場合は

Cells(i,1)
Cells(i,j)

上記のように書きます。

スポンサードリンク

セル範囲の指定方法

セル範囲を指定する場合はRangeを使わないといけないので

RangeとCellsを組み合わせて下記のように書きます。

Range(Cells(行,列), Cells(行,列))

例:セル範囲【B1~C5】を指定する場合
※Rangeの場合はRange(“B1:C5”)

Range(Cells(1,2), Cells(5,3))

と書きます。

変数iやjを使う場合は

Range(Cells(1,2), Cells(i,3))
Range(Cells(1,2), Cells(i,j))

上記のように書きます。

行範囲の指定方法

セル範囲を指定する場合はRangeを使わないといけないので

RangeとRowsを組み合わせて下記のように書きます。

Range(Rows(行), Rows(行))

例:行範囲【1~5行目】を指定する場合
※Rangeの場合はRange(“1:5”)

Range(Rows(1), Rows(5))

と書きます。

変数iやjを使う場合は

Range(Rows(1), Rows(i))
Range(Rows(i), Rows(j))

上記のように書きます。

スポンサードリンク

列範囲の指定方法

セル範囲を指定する場合はRangeを使わないといけないので

RangeとColumnsを組み合わせて下記のように書きます。

Range(Columns(列), Columns(列))

例:行範囲【A~C列】を指定する場合
※Rangeの場合はRange(“A:C”)

Range(Columns(1), Columns(3))

と書きます。

変数iやjを使う場合は

Range(Columns(1), Columns(i))
Range(Columns(i), Columns(j))

上記のように書きます。

Cells、Rows、Columnsを使ってRangeを組み合わせたセル指定方法の注意

注意ですがRangeを指定する場合に

シートオブジェクトを指定しないとエラーがでる場合があります。

その時にRangeの中に指定しているCells、Rows、Columnsにも

Worksheetオブジェクトを指定しないといけません。

例えば【シート1】でセルや行、列を指定する場合、下記のように書きます。

ThisWorkbook.Worksheets("sheet1").Range(ThisWorkbook.Worksheets("sheet1").Cells(行,列), ThisWorkbook.Worksheets("sheet1").Cells(行,列))
ThisWorkbook.Worksheets("sheet1").Range(ThisWorkbook.Worksheets("sheet1").Rows(行), ThisWorkbook.Worksheets("sheet1").Rows(行))
ThisWorkbook.Worksheets("sheet1").Range(ThisWorkbook.Worksheets("sheet1").Columns(列), ThisWorkbook.Worksheets("sheet1").Columns(列))

僕はここで結構悩みました。

スポンサードリンク

Cells、Rows、Columnsを使ってRangeを組み合わせたセル指定方法のまとめ

VBAを扱っていると変数を使ってセルの位置を変更する事が多いため

Cells、Rows、Columnsを使ってRangeを組み合わせる事が多くなります。

なるべくCells、Rows、Columnsを使っておき

Rangeを使わないといけない場合のみ組み合わせて使うことがいいと思います。

スポンサードリンク