\Excelショートカット集もらえる/
VBAのCellsとRangeの使い方 |範囲指定や変数の使用までわかりやすく解説
今回は、VBAでセルを選択する「Cells」の使用方法を解説します。また同じようにセルを選択する「Range」の使用方法ともに、Cellsとの違いや使い分け方をご紹介します。
- CellsやRangeの使い方やどう使い分けるのか知りたい方
- VBAでセルの選択をしたい方
- VBA初学者
CellsとRangeの違い
VBAでセルを選択する方法には「Cells」と「Range」があります。この2つの使い分けは以下のようになります。
- 単一のセルを選択するとき
- シート全体を選択したいとき
- 条件によって選択するセルが変わるとき(変数でセルを指定したいとき)
- セルを範囲で選択したいとき(複数セル選択をしたいとき)
- 選択するセル範囲が固定のとき
- 名前を定義したセル範囲を選択するとき
セルを範囲で指定するときや定義した名前を使うときは「Range」を、変数を使うときは「Cells」を使うと覚えておきましょう。
それではそれぞれの使い方を見ていきましょう。
Cells
Cellsは単一のセルを選択するときに使用します。
Cells(行, 列)
Cellsの使い方をサンプルコードとともに見ていきます。
Cellsでセルを選択する
B5セルを選択するサンプルコード
Sub sample1_cells()
Cells(5, 2).Select
End Sub
SelectでCellsで指定したセルを選択できます。
実行すると、B5セルが選択されます。
実行結果
またCellsは列に列番号だけでなく、列の文字を指定することも可能です。
Sub sample1_cells()
Cells(5, "B").Select
End Sub
シート全体を選択する
Sub sample2_cells()
Cells.Select
End Sub
Cellsでは行・列を指定しないとシート全体を選択することができます。
実行結果
選択したセルに値を入力する
Sub sample3_cells()
Cells(1, 1).Value = "Hello"
Cells(2, 1).Value = 5
End Sub
セルに値を入力するときはCellsでセルを指定し、Valueでセルの値を変更します。また文字列を入力したいときは “(ダブルクオーテーション)で囲みます。
実行結果
また複数ワークシートが存在するときは、シートを指定することもできます。
Worksheets("Sheet1").Cells(1, 1).Value = "Hello"
Worksheets("Sheet2").Cells(2, 1).Value = 5
入力された文字のフォントや大きさを変更し太字にする
Sub sample4_cells()
Cells(3, 2).Value = "Youseful"
Cells(3, 2).Font.Bold = True
Cells(3, 2).Font.Name = "Arial"
Cells(3, 2).Font.Size = 12
End Sub
実行結果
このようにフォントやサイズを自由に変更できます。
clearで書式や値を消去できます。
Sub clear()
Cells(3, 2).clear
End Sub
変数を使用する
Cellsは変数を使用して、セルを選択できます。For文のようなループ文と組み合わせて指定するセルを動かすことができます。
以下の表がシートに記入されている時、E列の売上が500,000を越えているセルに色を付けてみます。
ファイルはこちらから
Sub sample5_cells()
Dim i As Integer
For i = 3 To 22
If Cells(i, 5) > 500000 Then
Cells(i, 5).Interior.Color = vbRed
End If
Next i
End Sub
変数 iと if文を用いて、E列(5列目)の値を表の終端(3行目から22行目)まで探索し、値が500,000を越えているセルを赤に変更しています。
実行結果
For文の使い方はこちら!
Rangeの使い方
Rangeはセル範囲(複数セル)を選択するときに使用します(単一セルも選択できます)。また固定のセルを指定する(変数を使わない)ときやセル範囲に名前が定義されているときもCellsではなくRangeを用います。
単一セルを選択するとき
Range(“セル”)
Rangeで単一セルを選択する、値を入力するサンプルコード
Sub sample1_1_range()
Range("C5").Select
End Sub
Sub sample1_2_range()
Range("C5").Value = 100
End Sub
複数のセルを範囲指定する
またRangeはCellsと違い、セル範囲を選択できます。
Range(“始点セル:終点セル”)
A1セルからE10セルまで選択するサンプルコード
Sub sample2_range()
Range("A1:E10").Select
End Sub
実行結果
CellsとRangeを組み合わせて範囲を選択
RangeはCellsと組み合わせてセルの範囲を指定できます。
Sub sample3_range()
Range(Cells(1.1), Cells(10, 5)).Value = 10
End Sub
CellsでRangeの範囲を指定します。A1からE10セルまで値(上記サンプルコードでは10)を入力します。
実行結果
定義した名前でセルの範囲を指定する
セルの範囲に名前を付けた場合、Rangeでその名前を指定し、範囲を選択することができます。
Range(“定義した名前”)
今回はA3セルからD6セルに名前を付け、Rangeで選択してみます。A3セルからD6セルまでドラッグし、右クリックで「名前の定義」を選択し、名前を定義します。今回はsampleと定義します。
次のサンプルコードを実行するとA3セルからD6セルが選択できます。
Sub sample4_range()
Range("sample").Select
End Sub
行全体・列全体を指定する(Rows・Columns)
行全体を指定するときは「Rows」を使います。
たとえば、3行目を選択したいときは
Rows(3)
と書きます。
複数行指定するとき、たとえば2~5行目を指定したいときは
Rows(“2:5”)
あるいは
Range(Rows(2), Rows(5))
と書きます。
Rangeを使って2~5行目に値を入力するサンプルコード
Sub sample_rows()
Range(Rows(2), Rows(5)).Value = 5
End Sub
実行結果
2~5行目に値が入力されます。
列全体を指定するときは「Columns」を使います。たとえばB列を指定したいときは
Columns(2)
あるいは
Columns(“B”)
と書きます。
複数列指定するとき、たとえばB~E列を指定したいときは
Columns(“B:E”)
と書きます。複数列指定のときは引数に数値は使えません。
またRangeとColumnsを組み合わせて書く場合は
Range(Columns(2), Columns(5))
となります。
Rangeを使って、B~E列に値を入力するサンプルコード
Sub sample_columns()
Range(Columns(2), Columns(5)).Value = 5
End Sub
実行結果
RowsやColumnsはCellsと同様に変数で列番号や行番号を指定できます。
まとめ
今回はCellsとRangeの使い方を解説しました。
変数を使用してセルを選択するときはCellsを、複数のセルを選択したい場合はRangeを使います。
「もっとVBAを学んで日頃の業務に活かしたい!」
「独学でVBAを学ぶのは少し不安・・・」
「VBAを効率的に学ぶにはどの講座が良いのだろう・・・」
そんな方にはユースフルの公式LINEがオススメです!元伊藤忠商事経理でExcel実務のプロ、長内孝平(おさ)が運営しており
- VBAを含むExcel無料講義動画480分
- ExcelPro講座VBAコースにも使える!講座割引クーポン
などLINE会員限定の豪華4大特典を無料でプレゼント中です!ぜひコチラ↓の画像をタップして受け取ってくださいね!