【VBAでセルを選択する】プログラミングで「単一セル」「範囲」を操作
この記事はエクセルVBA初心者向けに『セル選択』について書いています。
この記事の目次
VBAでセルを選択する方法
こんにちは、Fujiya(@fujiya_xyz)です。
エクセルの作業で「セルを選択」「範囲を選択」の場面はたくさんあると思います。
今回はVBAで「セルを選択する」プログラミングをします。
VBAに不慣れな人でもわかるように、専門用語をなるべく使わずに書きました。このコードはVBAの基礎なので必修ではあるのですが、ぶっちゃけ『覚えるよりも慣れろ』という感じになります。
VBAのコード記述するビジュアルエディタの立ち上げや記述方法などは【エクセル】VBAを始めたいへのロードマップを読んでいただく・実践していただいてからの方が理解がスムーズだと思います。
また、この記事ではプログラムをイメージしやすいようにサンプルコードを書いています。実行の方法がわからないという方は、下のリンクで説明しているので参考にしていただければ幸いです。
サンプルコードってどうやって使うの?【エクセルVBA初心者向け】
VBAコードの紹介によくある「サンプルコード」。初心者の人向けに『サンプルコードの実行の仕方』を説明しています。誰でも最初はわからないことだらけなので問題ありません、僕もそうでした。
エクセルではマウスで簡単に「セルの選択」が出来ますよね。
コード記述が出来るようになると自動プログラムの中で自動的にセルを選択することができます。
「選択して何に使うの?」って感じですが、選択されたセル・範囲の「色を変える」「印刷」「フォームに表示」「削除」など様々なことに使えます。活用法は無限です。
必要な知識となってくるのが「Range」と「Cells」です。これはセルを選択する時に使用するコードになります。具体的な使い方は記事の下の方で説明しています。
「なぜ2種類あるのか?」というと、それぞれの特徴があり作業によって使い分けていく感じになります。
使い分けの具体的な例
- 変数を使う時は「Cells」
- 範囲の選択を複数するのは「Range」
僕の経験上、特徴を頭に入れるよりも作業していく中で覚えていく方が良いですよ。
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を使って複数のセルを同時に選択することもできます。
手動だとコントロールキーを押しながらセルを1つ1つクリックしていくと思うのですが、VBAでは一瞬です。
記述はRange("セル1,セル2").Select
感じになります。
上画像のように選択するには以下の様になります。
Sub 選択()
Range("A1,A3,B2,C1,C3").Select
End Sub
※Cellsではセルを複数選択することはできません。
セル範囲を選択する
通常だとドラッグ操作でセル範囲を選択しますが、これを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
上で説明してきたコードは省略していますが、複数のシートがある場合には「どのシート」「どのセル」なのかをしっかり書かないといけません(省略するとアクティブシートのセルとなります)。
僕も始めたばかりの頃に経験したことがあるのですが、範囲を選択したいシートがアクティブな状態になっていないとエラーになります(下画像)。
これは選択しようとしたセルが含まれるシートがアクティブになっていないためです。
アクティブというのは「使える状態になっていない」「表示されていない」「選択されていない」というカンジです(上画像)。
エクセルとしては『今「Aシート」の動作をしているのに、「Bシート」のセル選択をするな!』というカンジですね。
その場合には範囲選択のコードを記述する前にシートを指定(アクティブ)にする必要があります。これには.Activate
というコードを使います。
‘シートをアクティブにする
Worksheets("指定シート名").Activate
‘シートを指定してから「Cells」を使ってセル範囲選択
Worksheets("指定シート名").Range(Cells(始セルの行, 始セルの列), Cells(終セルの行,終セルの列 )).Select
End Sub
シートを.Activate
(アクティブ)にしてから「Cells」を使ってセル範囲選択をした場合がこんな感じです。
「何をどうするのか?」というのを明確にすることが大事ですね。
VBAでセルを選択する方法|まとめ
今回は「VBAでセルを選択する方法」ということを書いてきました。
紹介した内容をまとめます。以下。
VBAでセル範囲のポイント
- 変数を使う時は「Cells」
- 範囲の選択を複数するのは「Range」
- 「選択」には.Selectを使用
- Range(“セル”).Select(単一)
- Cells(行, 列).Select(単一)
- Range(“セル1,セル2”).Select(複数)
- Range(“A1:E10”).Select(範囲)
- Range(Cells(始セルの行, 始セルの列), Cells(終セルの行,終セルの列 ))(範囲)
- 複数シートの場合は「シートを指定」
「Range」と「Cells」はVBAコード記述には必ず出てくる超重要なモノです。
ですが、実際にはかなり頻回に使うので勝手に習得していけると思います。忘れたら見直す感じでしょうか。
僕がそんな感じでした。また、他にもたくさんのテクニックなどがありますが、自分に必要なものだけを学んでいくスタイルがベストだと思います。
今回の記事は以上になります。
最後まで読んでいただきましてありがとうございました。
【VBAで印刷】エクセル作業をボタン1つで楽にするプログラム
VBAで印刷を自動化するプログラムの説明です。これが出来るようになると様々なツールに印刷機能を付けることが出来ます。作業効率も良いです。
【エクセル】VBAで自動保存プログラムを作ってみる
エクセルVBAで自動保存プログラムの解説です。