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 列
1

セル名で選択

Range の引数にセル名を指定すると、そのセルを取得できます。EntireColumn からその列を取得できます。

セル「A2」の列を選択するには Range("A2").EntireColumn.Select を入力します。

Range("A2").EntireColumn.Select
2

列の範囲を選択

列の範囲「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
4

セルの範囲の列を選択

セルの範囲「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
5

または 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
' 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)