【VBAでセルを選択する】プログラミングで「単一セル」「範囲」を操作

DIY エクセルVBA

こんにちは、Fujiya(@fujiya_xyz)です。

エクセルの作業で「セルを選択」「範囲を選択」の場面はたくさんあると思います。

今回はVBAで「セルを選択する」プログラミングをします。

VBAに不慣れな人でもわかるように、専門用語をなるべく使わずに書きました。このコードはVBAの基礎なので必修ではあるのですが、ぶっちゃけ『覚えるよりも慣れろ』という感じになります。

VBAのコード記述するビジュアルエディタの立ち上げや記述方法などは【エクセル】VBAを始めたいへのロードマップを読んでいただく・実践していただいてからの方が理解がスムーズだと思います。

VBA習得のロードマップ

VBAでセルを選択できる方法

エクセルでセルの選択をする

この記事の目次

VBAでセルを選択する方法
 ⇒VBAで単一セルを選択
 ⇒VBAで複数のセルを選択する
 ⇒VBAでセル範囲を選択する
 ⇒VBAでセルを選択する場合の注意点VBAでセルを選択する方法|まとめ

エクセルではマウスで簡単に「セルの選択」が出来ますよね。

コード記述が出来るようになると自動プログラムの中で自動的にセルを選択することができます

「選択して何に使うの?」って感じですが、選択されたセル・範囲の「色を変える」「印刷」「フォームに表示」「削除」など様々なことに使えます。活用法は無限です。

必要な知識となってくるのが「Range」と「Cells」です。これはセルを選択する時に使用するコードになります。具体的な使い方は記事の下の方で説明しています。

「なぜ2種類あるのか?」というと、それぞれの特徴があり作業によって使い分けていく感じになります。

使い分けの具体的な例

  • 変数を使う時は「Cells」
  • 範囲の選択を複数するのは「Range」

僕の経験上、特徴を頭に入れるよりも作業していく中で覚えていく方が良いですよ。

VBAで単一セルを選択

VBAでセルの選択

Rangeを使ったセル選択

エクセルのシート左1番上セルの「A1」を選択してみます(上画像)。

「選択」には.Selectを使用していきます。コードは以下。

Range("セル").Select

“セル”の部分に「A1」を入れてみると以下のような感じになります。

Sub 選択()
Range("A1").Select
End Sub

これを実行すると動作するはずです。様々なセルを入れて試してみてください。

「Cells」を使ったセル選択

Cellsでセルを指定する方法はCells(行, 列)という感じになります。

セル「A1」を指定する場合は『1行目の1列目』なので、Cells(1, 1)となります。

慣れるとカンタンに出来るようになりますよ。

.Selectを使用して選択すると以下。

Sub 選択()
Cells(1, 1).Select
End Sub

複数のセルを選択する

VBAでセルを複数選択する

VBAを使って複数のセルを同時に選択することもできます。

手動だとコントロールキーを押しながらセルを1つ1つクリックしていくと思うのですが、VBAでは一瞬です。

記述はRange("セル1,セル2").Select感じになります。

上画像のように選択するには以下の様になります。

Sub 選択()
Range("A1,A3,B2,C1,C3").Select
End Sub

※Cellsではセルを複数選択することはできません。

セル範囲を選択する

VBAでセルの範囲を選択

通常だとドラッグ操作でセル範囲を選択しますが、これをVBAでプログラミングします。

Rangeを使って範囲を選択する

上画像のように選択するにはRange("A1:E10").Selectとなります。

実はもう1つ方法があり、Range("A1", "E10").Selectという記述でも同じ結果になります。

僕は最初に紹介したコードを使用することがほとんどです。

まとめるとこんな感じです。以下。

'➀の方法
Sub 選択()
Range("A1:E10").Select
End Sub

'➁の方法
Sub 選択()
Range("A1", "E10").Select
End Sub

「Cells」を使ってセルを選択

「Cells」を使って範囲を選択するには「Range」も併せて使います。

セルの指定はRange(Cells(始セルの行, 始セルの列), Cells(終セルの行,終セルの列 ))と、少し長くなります。

実際に書いてみるとこんな感じです。以下。

Sub 選択()
Range(Cells(1, 1), Cells(10, 5)).Select
End Sub

「Cells」を使った範囲選択は変数を使えるので、メチャクチャ重要です。僕も1番使いますね。

VBAでセルを選択する場合の注意点

複数シートがあり、”希望シートのみセルを選択する“場合にはシートを指定する必要があります。

Worksheets("指定シート名").Range("セル").Select

上で説明してきたコードは省略していますが、複数のシートがある場合には「どのシート」「どのセル」なのかをしっかり書かないといけません(省略するとアクティブシートのセルとなります)。

僕も始めたばかりの頃に経験したことがあるのですが、範囲を選択したいシートがアクティブな状態になっていないとエラーになります(下画像)。

VBAのセル選択でのエラー

これは選択しようとしたセルが含まれるシートがアクティブになっていないためです。

シートをアクティブにする

アクティブというのは「使える状態になっていない」「表示されていない」「選択されていない」というカンジです(上画像)。

エクセルとしては『今「Aシート」の動作をしているのに、「Bシート」のセル選択をするな!』というカンジですね。

その場合には範囲選択のコードを記述する前にシートを指定(アクティブ)にする必要があります。これには.Activateというコードを使います。

Sub 選択()
'シートをアクティブにする
Worksheets("指定シート名").Activate

'シートを指定してから「Cells」を使ってセル範囲選択
Worksheets("指定シート名").Range(Cells(始セルの行, 始セルの列), Cells(終セルの行,終セルの列 )).Select
End Sub

シートを.Activate(アクティブ)にしてから「Cells」を使ってセル範囲選択をした場合がこんな感じです。

「何をどうするのか?」というのを明確にすることが大事ですね。

VBAでセルを選択できる方法|まとめ

今回は「VBAでセルを選択する方法」ということを書いてきました。

Range」と「Cells」はVBAコード記述には必ず出てくる超重要なモノです。

ですが、実際にはかなり頻回に使うので勝手に習得していけると思います。忘れたら見直す感じでしょうか。

僕がそんな感じでした。また、他にもたくさんのテクニックなどがありますが、自分に必要なものだけを学んでいくスタイルがベストだと思います。

今回の記事は以上になります。
最後まで読んでいただきましてありがとうございました。