Excel VBA セルの選択と参照

スポンサーリンク
スポンサーリンク

セルの選択

VBAでセルを選択するには
通常は、Select【セレクト】メソッドを使用しますが
ほかにも、Activate【アクティベート】メソッド
Goto【ゴートゥ】メソッドが使用できます。

これらのメソッドの動作の違いを理解すると
効率的にセルの選択ができるようになります。

VBAでセルを選択する主なメソッド

  • Select【セレクト】メソッド
    単一のセルやセル範囲を選択するメソッド
  • Activate【アクティベート】メソッド
    単一のセルをアクティブにするメソッド
  • Goto【ゴートゥ】メソッド
    単一のセルやセル範囲を選択してジャンプするメソッド

Select【セレクト】Activate【アクティベート】メソッドの書式

オブジェクト.Select
オブジェクト.Activate


設定する項目

  • オブジェクト
    Range【レンジ】オブジェクトを指定します。

※Selectメソッドは、単一のセルまたは、セル範囲を選択します。

※Activateメソッドは、単一セルをアクティブにします。

※ワークシートを指定しない場合は、
アクティブシートのセルが対象になります。

※ワークシートを指定した場合は、
そのシートがアクティブになっていないとエラーになります。
指定したシートをActivateメソッドでアクティブにしてから
セルを選択してください。(例:Worksheets(“sheet2”).Activate)

A1からC3のセル範囲を選択してB2セルをアクティブにするコード例

Sub セル選択()
Range("A1:C3").Select
Range("B2").Activate
End Sub

実行結果


※アクティブにするセルが、選択されているセルの範囲内の場合は
セルの選択範囲は解除されません。
選択範囲外をアクティブにした場合は選択されたセル範囲は解除されます。

※セルをアクティブにした後に
セル範囲を選択するとアクティブセルは解除されます。


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

実行前

実行後


選択しているセルを参照する方法

アクティブウィンドウまたは選択したウィンドウで現在選択されている
単一セルたセル範囲を参照するRangeオブジェクトを取得するには
Selection【セレクション】プロパティを使用します。

アクティブウィンドウまたは選択したウィンドウで現在選択されている
アクティブセルを参照するRangeオブジェクトを取得するには
Activecell【アクティブセル】プロパティを使用します。

Selection【セレクション】Activecell【アクティブセル】】プロパティの書式

[]内は省略可能です。
[オブジェクト.]Selection
[オブジェクト.]Activecell


設定する項目

  • オブジェクト
    Application【アプリケーション】オブジェクトまたは、
    Window【ウィンドウ】オブジェクトを指定します。

    省略した場合はアクティブウィンドウが対象になります。

※Selectionプロパティは、選択されているオブジェクトの種類によって
返る値が異なります。セルが選択されていれば、セルを参照しますが
図形が選択されていれば、図形を参照します。
※Applicationプロパティは、アクティブウィンドウがワークシートでない
場合はエラーになります。

選択セル範囲に罫線を引きアクティブセルに文字列を代入するコード例

Sub 選択範囲の参照2()
Range("A1:C3").Select
Selection.Borders.LineStyle = True
ActiveCell.Value = "VBA"
End Sub

実行結果


※Activateメソッドでセルをアクティブにしない場合、Selectメソッドで選択された
セル範囲の左上スミがアクティブセルになります。


セルの参照

Excelの通常操作でセルを操作する場合は、まずセルを選択して
からセルを操作しますが
VBAの場合のセル操作は、セルを参照するだけで
セルを選択しなくてもセルの操作ができます。

VBAでセルを参照するには、Rangeオブジェクトを使用します。
Rangeオブジェクトのプロパティやメソッドを使用して
セルに対して操作をします。

Rangeオブジェクトを取得するには
RangeプロパティまたはCellsプロパティを使用します。

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([行番号,列番号])


設定する項目

  • オブジェクト
    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【インターセクト】メソッド
    複数のセル範囲の重複範囲を参照します。
スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク