【VBA基礎編】操作したいセルを指定しよう①(行、列)

Excel VBA VBA基礎編

Excel VBA

文字を入力するときや複数のセルをコピーするときは、意識せずとも対象のセルをクリックしたり、セルの範囲をドラッグ&ドロップで選択したりして操作対象(=オブジェクト)を選んだ後に目的の操作を行っていると思います。
まずはオブジェクトの中でもセルや行、列を指定する方法をお伝えします。

目次

Excelの構造について

セルってなに?

セルとはエクセルに表示される全てのマス目のことです。セルの横の並びを「行」といい、セルの縦の並びを「列」といいます。ちなみに、Excel2007以降ではひとつのシートに1,048,576行×16,384列=17,179,869,184個のセルがあります。

【行と列の覚え方】
行は右に伸びる線が2本、列は下に伸びる線が2本と覚えましょう。
行と列の覚え方

セルとシートの関係性

マス(=セル)の集まりがワークシート、ワークシートの集まりがワークブックです。
こちらのサイト様が関係性についてわかりやすく紹介されています。

→ Excel のブック、ワークシート、セルの関係を理解する - まくまくWindowsノート

セルを指定するためのRangeとCells

ではさっそく「B1」のセルを指定してみます。コードの書き方は、Rangeを使う書き方とCellsを使う書き方があります。
↓ どの書き方をしても「B1」を表しています。

  1. Range("B1")
  2. Cells(1, 2)
  3. Cells(1, "B") ←フォロワーさんに教えてもらいました

書き方の違い

Rangeを使うと「A1」や「C5」など見慣れた書き方でセルを指定することができます。Cellsの数字は"上から何番目"と"左から何番目"を意味しています。

この"上から何番目"を「行番号(Row)」といい、"左から何番目"を「列番号(Column)」といいます。セルを行番号と列番号で表す方法をR1C1形式と呼びます。

Range と Cells の使い分け

「A1」や「C5」など予め操作の対象となるセルが決まっている場合はRangeを使うといいと思います。特定のセルではなく、条件によって操作するセルを変えながら処理をしたい場合など、変数を用いてセルを指定するときはCellsを使いましょう。

複数のセルを指定したい

Rangeで複数のセル(セル範囲)を指定する書き方はたくさんありますが、基本的な書き方はこんな感じ(どちらも同じセル範囲を指定)↓

Range("A1:C7")
Range("A7","C7")

Cellsで指定することができるのは単独セルだけです。変数を用いる場合など、Cellsを使ってセル範囲を指定したいときは、

Range(Cells(行番号, 列番号), Cells(行番号, 列番号))

のようにRangeとCellsを組み合わせた書き方をします。他にも範囲を指定するために使えるコードはたくさんあるので、ぜひ調べてみてください。私のブログでも今後記事にする予定です!

行と列の全体を指定する方法

一行まるっと消したいとき、色をつけたいときもあると思います。そんなときは行や列そのものを指定してみましょう。書き方はたくさんありますが、私が使っている書き方をご紹介します。

指定したい行/列が決まっている

Rows(3)				'3行目全体
Rows("1:5")			'1~5行目の5行分全体
Columns("A") or Columns(1)	'A列全体
Columns("A:C")			'A~C列の3列分全体へ

「3行目を消したい」など操作対象が最初から決まっているときは、パッと見てわかる表記の仕方がオススメです。

変数を使って複数の行/列を指定したい

Range(Rows(変数1),Rows(変数2))			'変数で指定した範囲の行全体
Range(Columns(変数1), Columns(変数2))		'変数で指定した範囲の列全体

連続する複数の行/列を指定したいときは、Range(開始行/列、終了行/列)とRangeで囲んでしまいましょう。

指定したセルを含む行/列を指定したい

Range("A5").EntireRow		'A5を含む行(=1行目)全体
Range("A2:A4").EntireRow	'2~4行目の3行分全体
Range("A2, A4").EntireRow	'2行目と4行目の2行分全体
Range("E6").EntireColumn	'E6を含む列(=E列)全体
Range("C2:E4").EntireColumn	'C~E列の3列分全体
Range("C2, E4").EntireColumn	'C列とE列の2列分全体

.EntireRow(.EntireColumn)はCellsにも使うことができるので、変数を使って処理結果によるセルを含む行/列を指定することもできます。

今回はRangeとCells、RowsとColumnsについて説明しました。どんな操作を行うときもまずは"何を"操作したいのか意識してみてください。セルの扱いに慣れたら、セル>ワークシート>ワークブックとオブジェクトを大きな括りで考えることが次のステップです。ワークシートやワークブックの指定についても解説するのでぜひ見てくださいね。


自分の写真
りり
私は「Cells」の方がプログラム書いてる感がするので好きです(*・ω・*)

QooQ