はじめに
Excel VBAでは、列の選択方法に「Columns」と「EntireColumn」という2つの方法があります。
同じ操作をするのに、なぜ2つの方法が存在するのかが分からなかったので、両者を少し調べてみました。
Columnsプロパティ
- Columnsは「"レシーバ"で指定された範囲の内、指定された列範囲を返す」という処理です。
- 以下のコードだと、B列が
ary2D
に代入されます。
ColumnsSelector.bas
Sub SelectByColumns()
Dim ary2D As Variant
ary2D = ThisWorkbook.Worksheets(1).Range("B:F").Columns(1)
End Sub
EntireColumnプロパティ
- EntireColumnは「"レシーバ"で指定された範囲を含む列全体を返す」という処理です。
- 以下のコードだと、レシーバで指定されているB列からF列までの5列が
ary2D
に代入されます。 - MicrosoftのAPIによると、EntireColumnは「読み取り専用」と書かれているため、用途が限られると思われます。
ColumnsSelector.bas
Sub SelectByEntireColumn()
Dim ary2D As Variant
ary2D = ThisWorkbook.Worksheets(1).Range("B:F").EntireColumn
End Sub
その他
- @KotorinChunChun さんからのご指摘を踏まえて、記事を全面的に見直しました。