セルを選択する方法
VBAでセルを選択するには、通常はRange【レンジ】オブジェクトのSelect【セレクト】メソッドを使用しますが、他にも、Activate【アクティベート】メソッドやApplication【アプリケーション】オブジェクトのGoto【ゴートゥ】メソッドが使用できます。これらのメソッドの動作の違いを理解すると効率的にセルの選択ができるようになります。
VBAでセルを選択する主なメソッド
メソッド | 内容 |
---|---|
Select【セレクト】 | 単一のセルやセル範囲を選択します。 |
Activate【アクティベイト】 | 単一のセルをアクティブにします。 |
Goto【ゴートゥ】 | 単一のセルやセル範囲を選択してジャンプします。 |
選択しているセルを参照する方法
アクティブウィンドウまたは選択したウィンドウで現在選択されている単一セルまたは、セル範囲を参照するRange【レンジ】オブジェクトを取得するには、Selection【セレクション】プロパティを使用します。アクティブウィンドウまたは選択したウィンドウで現在選択されているアクティブセルを参照するRange【レンジ】オブジェクトを取得するには、Activecell【アクティブセル】プロパティを使用します。
選択しているセルを参照するプロパティ一覧
プロパティ | 内容 |
---|---|
Selection【セレクション】 | 選択されているセル、またはセル範囲を参照します。 |
Activecell【アクティブセル】 | アクティブなセル、またはセル範囲を参照します。 |
セルを参照する方法
Excelの通常操作でセルを操作する場合は、まずセルを選択してからセルを操作しますが、VBAの場合のセル操作は、セルを参照するだけでセルを選択しなくてもセルの操作ができます。VBAでセルを参照するには、Range【レンジ】オブジェクトを使用します。Range【レンジ】オブジェクトのプロパティやメソッドを使用してセルに対して操作をします。
Range【レンジ】オブジェクトを取得するには、Range【レンジ】プロパティまたはCells【セルズ】プロパティを使用します。
セルを参照するプロパティ一覧
プロパティ | 内容 |
---|---|
Range【レンジ】 | 引数に指定したセルやセル範囲を参照します。 |
Cells【セルズ】 | 引数に指定したセルやセル範囲を参照します。 |
Select【セレクト】メソッド
Activate【アクティベート】メソッド
Select【セレクト】Activate【アクティベート】メソッドの書式と設定値の説明
オブジェクト.Select
オブジェクト.Activate
- オブジェクト(必須)
選択やアクティブにするセルやセル範囲をRange【レンジ】オブジェクトで指定します。
※Selectメソッドは、単一のセルまたは、セル範囲を選択します。
※Activateメソッドは、単一セルをアクティブにします。
※ワークシートを指定しない場合は、アクティブシートのセルが対象になります。
※ワークシートを指定した場合は、そのシートがアクティブになっていないとエラーになります。指定したシートをWorksheet【ワークシート】オブジェクトのActivate【アクティベイト】メソッドでアクティブにしてからセルを選択してください。(例:Worksheets(“sheet2”).Activate)
A1からC3のセル範囲を選択してB2セルをアクティブにするコード例
Sub セル選択() Range("A1:C3").Select Range("B2").Activate End Sub
実行結果
※アクティブにするセルが、選択されているセルの範囲内の場合はセルの選択範囲は解除されません。選択範囲外をアクティブにした場合は選択されたセル範囲は解除されます。
※セルをアクティブにした後にセル範囲を選択するとアクティブセルは解除されます。
Goto【ゴートゥ】メソッド
Goto【ゴートゥ】メソッドの書式と設定値(引数)の説明
[]内は省略可能です。
オブジェクト.Goto([Reference,Scroll])
- オブジェクト(必須)
Application【アプリケーション】オブジェクトを指定します。 - Reference【リファレンス】(省略可)
移動先のセルまたは、セル範囲を指定します。省略した場合は、直前にGotoメソッドで移動したセル範囲になります。Reference【リファレンス】は参照という意味があります。 - Scroll【スクロール】(省略可)
Trueに設定した場合は、移動先のセルが画面の左上スミになるようにスクロール(移動)します。Falseに設定した場合や省略した場合は、スクロール(移動)しません。
※戻り値がないので引数の前後の()カッコは付けません。
※引数名は不要ですが、わかりやすくするためにつけた方が良いと思います。
※指定したブックやシートがアクティブでない場合は選択した際にアクティブになります。
※オブジェクトのApplication【アプリケーション】を指定しないと、プロシージャ内の指定行に移動するGoToステートメントと認識されてしまい、エラーになります。
Sheet2のB4からD7セルにジャンプして選択するコード
Sub ジャンプ() Application.Goto Reference:=Worksheets("sheet2").Range("B4:D7"), scroll:=True End Sub
実行前
実行後
Selection【セレクション】プロパティ
Activecell【アクティブセル】プロパティ
Selection【セレクション】Activecell【アクティブセル】プロパティの書式と設定値の説明
[]内は省略可能です。
[オブジェクト].Selection
[オブジェクト].Activecell
- オブジェクト
Application【アプリケーション】オブジェクトまたは、
Window【ウィンドウ】オブジェクトを指定します。
省略した場合はアクティブウィンドウが対象になります。
※Selectionプロパティは、選択されているオブジェクトの種類によって返る値が異なります。セルが選択されていれば、セルを参照しますが図形が選択されていれば、図形を参照します。
※Activecell【アクティブセル】プロパティは、アクティブウィンドウがワークシートでない場合はエラーになります。
選択セル範囲に罫線を引きアクティブセルに文字列を代入するコード例
Sub 選択範囲の参照2() Range("A1:C3").Select Selection.Borders.LineStyle = True ActiveCell.Value = "VBA" End Sub
実行結果
※Activateメソッドでセルをアクティブにしない場合、Selectメソッドで選択されたセル範囲の左上スミがアクティブセルになります。
Range【レンジ】プロパティ
Range【レンジ】プロパティの書式と設定値(引数)の説明
[]内は省略可能です。
[オブジェクト].Range(セル番地)
- オブジェクト(省略可)
Application【アプリケーション】オブジェクト、またはWorksheet【ワークシート】オブジェクト、またはRange【レンジ】オブジェクトを指定します。省略した場合はアクティブシートが対象になります。 - セル番地(必須)
単一セルまたは、セル範囲を表すA1形式の文字列で指定します。
Range【レンジ】プロパティでのセルの参照方法一覧
参照するセル | 指定方法 | 内容 |
---|---|---|
単一セル | Range(“A1”) | A1セルを参照 |
離れた単一セル | Range(“A1,D1”) | A1セルとD1セルを参照 |
セル範囲 | Range(“A1:D1”) | A1セル~D1セル参照 |
Range(“A1″,”D1”) | ||
離れたセル範囲 | Range(“A1:D1,A3:D3”) | A1~D1セルとA3~D3セルを参照 |
列全体 | Range(“A:D”) | A列~D列を参照 |
行全体 | Range(“1:4”) | 1行~4行を参照 |
名前付きセル範囲 | Range(“名前”) | 名前付き範囲「名前」を参照 |
※Range【レンジ】オブジェクトに対してRange【レンジ】プロパティを使用した場合指定したセル範囲の中のセルを相対的に参照します。Range(“B1:D4”).Range(“A1”)とした場合はB1セル~D4セルの中でのA1(1列目1行目)にあたるB1セルを参照します。
Range【レンジ】プロパティでセルを参照して文字列を代入するコード例
Sub セル参照() Range("A1") = "VBA" Range("A2,D2") = "EXCEL" Range("A3:D3") = "vba" Range("A4:D4,A6:D6") = "excel" End Sub
実行結果
Cells【セルズ】プロパティ
Cells【セルズ】プロパティの書式と設定値(引数)の説明
[]内は省略可能です。
[オブジェクト].Cells([行番号,列番号])
- オブジェクト(省略可)
Application【アプリケーション】オブジェクト、またはWorksheet【ワークシート】オブジェクト、またはRange【レンジ】オブジェクトを指定します。省略した場合はアクティブシートが対象になります。 - 行番号(必須)
行を上から数えた数を指定します。 - 列番号(必須)
列を左から数えた数、または列のアルファベットを指定します。アルファベットで指定する場合は「”A”」のようにダブルクォテーションで囲みます
※引数の行番号、列番号を省略した場合はすべてのセルが参照範囲になります。
Cellsプロパティでのセルの参照方法一覧
参照するセル | 指定方法 | 内容 |
---|---|---|
単一セル | Cells(1,1) cells(1,”A”) | A1セルを参照 |
離れた単一セル | Cells(1,1) Cells(1,4) | A1セルとD1セルを参照 |
セル範囲 | Range(Cells(1,1),Cells(1,4)) | A1セル~D1セル参照 |
離れたセル範囲 | Range(Cells(1,1),Cells(1,4)) Range(Cells(3,1),Cells(3,4)) | A1~D1セルとA3~D3セルを参照 |
全セル | Cells | すべてのセルを参照 |
Cellsプロパティでセルを参照して文字列を代入するコード例
Sub セル参照2() Cells(1, 1) = "VBA" Cells(2, 1) = "EXCEL" Cells(2, 4) = "EXCEL" Range(Cells(3, 1), Cells(3, 4)) = "vba" Range(Cells(4, 1), Cells(4, 4)) = "excel" Range(Cells(6, 1), Cells(6, 4)) = "excel" End Sub
実行結果
その他のセルを参照する主なプロパティ一覧
リンクで詳細説明ページが開きます
プロパティ | 内容 |
---|---|
CurrentRegion【カレントリージョン】 | アクティブセル領域を参照します。 |
End【エンド】 | 表の端のセルを参照します。 |
Offset【オフセット】 | 現在のセルに対して相対的な位置を参照します。 |
Resize【リサイズ】 | セル範囲のサイズを変更します。 |
UsedRange【ユーズドレンジ】 | 使用されたセル範囲を参照します。 |
MergeArea【マージエリア】 | 結合されたセルを参照します。 |
Address【アドレス】 | 参照セルのアドレスを取得します。 |
その他のセルを参照する主なメソッド一覧
メソッド | 内容 |
---|---|
SpecialCells【スペシャルセルズ】 | 指定した特別なセルを参照します。 |
Union【ユニオン】 | 複数のセル範囲をまとめて参照します。 |
Intersect【インターセクト】 | 複数のセル範囲の重複範囲を参照します。 |
以上で、セルやセル範囲の選択や参照をするメソッドとプロパティについての解説を終了します。ありがとうございました。