「vba 選択したセルの列を全選択する」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)で、現在選択されているセル・選択中のセルの、列全体を選択するには、どのようなコードを書けばいいのか探していた方による検索です。
選択されているセルの列全体を選択するサンプルマクロ
以下のようなマクロで、選択されているセルの列全体を選択できます。
If TypeName(Selection) <> "Range" Then Exit Sub
Selection.EntireColumn.Select
実際に選択を行っているのは、
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」となっています。
そのためVBE(Visual Basic Editor)で、「Selection.」と入力しても自動メンバー表示が行われませんから、オブジェクトモデルが自分の頭に入っていない、オブジェクトブラウザーを使えないレベルの方の場合、
Selection.EntireColumn.Select
というコードを、自力で書くことは難しくなってしまいます。
VBAのオブジェクト式やExcelのオブジェクトモデルを理解できていないけれど、オブジェクト変数はなんとなく使えるというレベルの方なら、以下のような書き方をすると自動メンバー表示が行われますから、便利「かも」しれません。
Dim rng As Range
If TypeName(Selection) <> "Range" Then Exit Sub
Set rng = Selection
rng.EntireColumn.Select
事前に、
Dim rng As Range
とRange型のオブジェクト変数を用意しておくことで、「rng.」と入力したときにRangeオブジェクトの持つプロパティとメソッドが入力候補として表示されますから、
オブジェクト式の文法やExcelのオブジェクトモデルを理解できていない方には、便利「かも」しれません。
- Newer:Find・FindNextで検索したセルを選択する
- Older:VBAでシートを新規ブックにコピーする
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで選択セルの列全体・行全体を選択する