サイトについて      連絡先   検索

VBA 最終列を取得する

はじめに

Excel VBA の最終列を取得する方法を紹介します。

Range.End メソッドで最終列を取得できます。

Columns プロパティから指定した範囲の最終列を取得できます。

最終列を取得する

最終列を取得

Range.End の引数に方向を指定すると、指定した列の終端のセルを取得できます。

これは Excel で End + ↑↓←→ キーを入力したときと同じセルを取得できます。

方向には次のものがあります。

定数名 説明
xlUp-4162上端
xlDown-4121下端
xlToLeft-4159左端
xlToRight-4161右端

End.EntireColumn と指定すると、終端の列を取得できます。

Dim r As Range
Set r = Range("B2").End(xlToRight).EntireColumn ' セル「B2」の右端の列を取得
Set r = ActiveCell.End(xlToLeft).EntireColumn   ' アクティブセルの左端の列を取得
r.Select

セル「B2」で End(xlToRight).EntireColumn とすると、セル「F2」の列を取得します。

セル「B3」で End(xlToRight).EntireColumn とすると、セル「C3」の列を取得します。

6

上の画像の行「3」のように途中に空白のセルがあると、最終列を取得できません。

こういうときはシートの最終列から左端のセルを取得します。

Dim r As Range
Set r = Cells(3, Columns.Count).End(xlToLeft) ' 3 は行「3」のこと
r.Select

範囲の最終列を取得

セルの範囲の一番左の列番号を取得するには Range.Column で取得できます。

セルの範囲の列数を取得するには Range.Columns.Count で取得できます。

セルの範囲の最終列を取得するには Columns(Range.Column + Range.Columns.Count - 1) で取得できます。

または Range.Columns(Range.Columns.Count).EntireColumn で取得できます。

Dim r As Range
Dim last As Range
Set r = Selection
Set last = Columns(r.Column + r.Columns.Count - 1) ' 範囲選択している最終列を取得
Set last = r.Columns(r.Columns.Count).EntireColumn ' 範囲選択している最終列を取得
last.Select
1

使用している範囲の最終列を取得

Sheets.UsedRange を指定すると、指定したシートで使用されているセルの最大範囲を取得できます。最大範囲とはシートで使用されている一番上、下、左、右のセルの範囲です。

UsedRange で取得した範囲を「範囲の最終列を取得」の方法を使用して最終列を取得します。

Dim r As Range
Dim last As Range
Set r = ActiveSheet.UsedRange ' 使用している範囲を取得
Set last = Columns(r.Column + r.Columns.Count - 1) ' 使用している最終列を取得
last.Select

UsedRange を使用すると、次の画像の範囲を取得できます。

2

UsedRange が使用しているセルと判断するのは、値が入っている他に書式設定されているセルも含まれます。

2

関連ページ