Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 列全体を取得・選択する-Columns・EntireColumn

列全体を取得・選択する-Columns・EntireColumn

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba range 列全体」
「excel vba 基本 コーディング 列全体」
「excel2010 列全体を選択するマクロ」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが、時折あることに気づきました。

列全体を取得したり選択したりする、Excel VBA(Visual Basic for Applications)のコードを探している方による検索です。

[スポンサードリンク]

Rangeプロパティで列全体を取得するサンプルマクロ

列全体を表すRangeオブジェクトを取得するオブジェクト式はいろいろ考えられますが、一番理解しやすいのは以下のようなコードでしょうか。
Sub 列全体を選択_Range()
 Range("A:A").Select
End Sub

Rangeプロパティに「A:A」のような列全体を表す文字列を指定すると、列全体を取得することができます。

上記のマクロでは「Range("A:A")」でA列全体を表すRangeオブジェクトを取得して、RangeオブジェクトのSelectメソッドで選択を行っています。

RangeプロパティとEntireColumnプロパティで列全体を取得するサンプルマクロ

以下のコードでもA列全体を選択できます。
Sub 列全体を選択_RangeとEntireColumn()
 Range("A1").EntireColumn.Select
End Sub

Rangeオブジェクトには、EntireColumnという列全体を表すRangeオブジェクトを返すプロパティが用意されています。列全体が選択されているのかどうかを判定するマクロで使っているプロパティです。

VBAで列全体を取得・選択する

Rangeプロパティの引数に文字列「A1」を指定することでA1セルを表すRangeオブジェクトを取得して、RangeオブジェクトのEntireCclumnプロパティで列全体を表すRangeオブジェクトを取得して、RangeオブジェクトのSelectメソッドで選択しているのが上記のマクロです。

CellsプロパティとEntireColumnプロパティで列全体を取得するサンプルマクロ

「cells 列全体 選択 vba」
「エクセル マクロ "cells" 列全体」
といった検索キーワードでも、アクセスがあります。

Cellsプロパティを使って、列全体を取得・選択するコードを探している方による検索キーワードです。

CellsプロパティとEntireColumnプロパティを組み合わせた、以下のようなコードでもA列全体を選択することができます。
Sub 列全体を選択_CellsとEntireColumn()
 Cells(1, 1).EntireColumn.Select
End Sub

EntireColumnプロパティは、Rangeオブジェクトのプロパティですから、「.EntireColumn」の前はRangeオブジェクトを取得するオブジェクト式やオブジェクト変数であれば、何でもいいわけです。

ここでは1行目・1列目のRangeオブジェクトをCellsプロパティで取得して、RangeオブジェクトのEntireColumnメソッドで列全体を表すRangeオブジェクトを取得して、Selectメソッドで選択を行っています。

ActiveCellプロパティとEntireColumnプロパティで列全体を取得するサンプルマクロ

アクティブなセルを表すRangeオブジェクトを返すActiveCellプロパティと、EntireColumnプロパティを組み合わせて以下のようなコードにすれば、アクティブなセルを含む、列全体を選択できます。
Sub 列全体を選択_ActiveCellとEntireColumn()
 ActiveCell.EntireColumn.Select
End Sub

ActiveCellプロパティでアクティブなセルを表すRangeオブジェクトを取得して、EntireColumnプロパティで列全体を表すRangeオブジェクトを取得して、Selectメソッドで選択を行っています。

Columnsプロパティで列全体を取得するサンプルマクロ

「cells 列全体 選択 vba」
「エクセル マクロ "cells" 列全体」
といった検索をした方は、何列目なのかを数値で指定して、列全体を取得したり選択したりしたかったのではないかと推測しています。

であれば、CellsプロパティとEntireColumnプロパティを組み合わせるのもいいですが、以下のようなコードはいかがでしょう。
Sub 列全体を選択_Columns()
 Columns(1).Select
End Sub

Columnsプロパティの引数に、何列目かを表す数字を指定すると、指定された列全体を表すRangeオブジェクトを取得できるのです。

この動きはオブジェクトブラウザーからは読み取れないのが残念なところですが、Columnsプロパティで返されたRangeオブジェクトの_Defaultプロパティが、Columnsプロパティから呼ばれたときには列全体を表すRangeオブジェクトを返すように作られているのでしょう。

オブジェクトブラウザーで確認するとわかるとおりColumnsプロパティはグローバルなメンバーですから、

VBAで列全体を取得・選択する

アクティブなワークシートの列全体を取得するのであれば、上位のオブジェクト式を書かずに、いきなり「Columns」と書き始めることができます。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 列全体を取得・選択する-Columns・EntireColumn

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 列全体を取得・選択する-Columns・EntireColumn

「行・列を表すRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.