Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで選択セルの列全体・行全体を選択する

VBAで選択セルの列全体・行全体を選択する

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

「vba 選択したセルの列を全選択する」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で、現在選択されているセル・選択中のセルの、列全体を選択するには、どのようなコードを書けばいいのか探していた方による検索です。

[スポンサードリンク]

選択されているセルの列全体を選択するサンプルマクロ

以下のようなマクロで、選択されているセルの列全体を選択できます。

Sub 選択セルの列全体を選択する()

 If TypeName(Selection) <> "Range" Then Exit Sub
 Selection.EntireColumn.Select

End Sub

実際に選択を行っているのは、
 Selection.EntireColumn.Select
の行です。
RangeオブジェクトのEntireColumnプロパティを使うと、列全体を表すRangeオブジェクトが取得できます。
Range.EntireColumnで取得したRangeの、Selectメソッドで選択を行っているコードです。

選択されているのがRangeでないときに、
 Selection.EntireColumn.Select
が実行されるとエラーが発生してしまうので、それを避けるために選択されているのがセルかどうかをTypeName関数で調べ、セルでなければSubプロシージャを終了する処理を入れています。
 If TypeName(Selection) <> "Range" Then Exit Sub

上記のマクロの、
 Selection.EntireColumn.Select
の部分を、行全体を表すRangeオブジェクトを取得するEnterRowプロパティを使って、
 Selection.EntireRow.Select
としてやれば、行全体の選択になります。

オブジェクト変数を使って選択されているセルの列全体を選択するサンプルマクロ

Excel VBAのSelectionプロパティは、何が選択されているのかによって取得できるオブジェクトが変わります。

オブジェクトブラウザーを確認しても、戻りは「As Object」となっています。

VBAで選択セルの列全体・行全体を選択する

そのためVBE(Visual Basic Editor)で、「Selection.」と入力しても自動メンバー表示が行われませんから、オブジェクトモデルが自分の頭に入っていない、オブジェクトブラウザーを使えないレベルの方の場合、
 Selection.EntireColumn.Select
というコードを、自力で書くことは難しくなってしまいます。

VBAのオブジェクト式やExcelのオブジェクトモデルを理解できていないけれど、オブジェクト変数はなんとなく使えるというレベルの方なら、以下のような書き方をすると自動メンバー表示が行われますから、便利「かも」しれません。

Sub 選択セルの列全体を選択する_オブジェクト変数利用()

 Dim rng As Range

 If TypeName(Selection) <> "Range" Then Exit Sub

 Set rng = Selection
 rng.EntireColumn.Select

End Sub

事前に、
 Dim rng As Range
とRange型のオブジェクト変数を用意しておくことで、「rng.」と入力したときにRangeオブジェクトの持つプロパティとメソッドが入力候補として表示されますから、

VBAで選択セルの列全体・行全体を選択する

オブジェクト式の文法やExcelのオブジェクトモデルを理解できていない方には、便利「かも」しれません。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで選択セルの列全体・行全体を選択する

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

検索


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

.