更新日:、 作成日:
VBA 列を選択する
はじめに
Excel VBA マクロで列を選択する方法を紹介します。
Columns(2).Select または Range("B1").EntireColumn.Select メソッドから、列「B」を選択できます。
Selection から、範囲選択しているセルを取得できます。
列を選択する
列番号か列名で選択
Columns の引数に列番号または列名を指定すると、その列を選択できます。
列「A」を選択するには Columns(1).Select または Columns("A").Select を入力します。
Columns(1).Select ' A 列
Columns("A").Select ' A 列
' Columns(3).Select ' C 列
セル名で選択
Range の引数にセル名を指定すると、そのセルを取得できます。EntireColumn からその列を取得できます。
セル「A2」の列を選択するには Range("A2").EntireColumn.Select を入力します。
Range("A2").EntireColumn.Select
列の範囲を選択
列の範囲「B ~ C」を選択するには Range("B:C").Select または Range("B:B", "C:C").Select を入力します。
' B ~ C 列目を選択
Range("B:C").Select
Range("B:B", "C:C").Select
Range(Columns(2), Columns(3)).Select
セルの範囲の列を選択
セルの範囲「B1」~「C1」の列を選択するには Range("B1:C1").EntireColumn.Select を入力します。
Dim r As Range
Set r = Range("B1:C1").EntireColumn ' B1 ~ C1 の列
r.Select
離れた列を選択
列「A」と「C ~ D」を選択するには Range("A:A, C:D").Select または のように指定します。
Range("A:A, C:D").Select
Range("A:A, C:C, E:F").Select
または Union(Range("A:A"), Range("C:D")).Select を入力します。
Union を使用すると、指定した 2 つのセルを組み合わせた範囲を取得できます。
Dim r As Range
Set r = Union(Range("A:A"), Range("C:D")) ' A 列と C ~ D 列
Set r = Union(r, Range("F:F")) ' A 列と C ~ D 列と F 列
r.Select
スポンサーリンク
選択範囲のセルを取得する
選択しているセルを取得するには Selection を入力します。列を選択しているときは、その範囲のセルを取得します。
Dim c As Range
Set c = Selection
Debug.Print(c.Column)
列の選択を解除する
列の選択を解除する方法はありません。Excel でもそのような操作は存在しません。どこか 1 つのセルを選択します。
Range("A1").Select
別シートの列を選択する
アクティブシートの列だけを選択できます。その他のシートに対して行うとエラーが発生します。
シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。
Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。
' Sheet1 の列を選択
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Columns(1).Select
Worksheets(1).Activate
Worksheets(1).Columns(1).Select
' Sheet2 の列を選択
Worksheets("Sheet2").Activate
Worksheets("Sheet2").Columns(1).Select
Worksheets(2).Activate
Worksheets(2).Columns(1).Select
Sheet1 に Columns を入力すると、自身のシートの列になります。自身を表す Me. が省略されています。
' どちらも同じコード
Dim r As Range
Set r = Columns(1)
Set r = Me.Columns(1)
標準モジュールに Columns を入力すると、開いているシートの列になります。アクティブシートを表す ActiveSheet. が省略されています。
' どちらも同じコード
Dim r As Range
Set r = Columns(1)
Set r = ActiveSheet.Columns(1)
スポンサーリンク