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

VBA 最終列を取得する

はじめに

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

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

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

  • 目次
    • 最終列を取得する

最終列を取得する

最終列を取得

指定したセルの終端を取得するにはRange.End(方向)のように入力します。

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

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

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

セル「B2」の右方向の終端の列を取得するにはRange("B2").End(xlToRight).EntireColumnを入力します。


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

セル「B2」の右方向は「F2」を、セル「B3」の右方向は「C3」を取得します。

6

3 行目のように途中に空白のセルがあると、その前のセルが取得されます。

シート全体に対して行「3」の最終列を取得するには次のようにします。


Dim r As Range
Set r = Cells(3, Columns.Count).End(xlToLeft).EntireColumn ' 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 ' 範囲
Set r = Range("B2:D4")
 
Dim last As Range ' 最終列
Set last = Columns(r.Column + r.Columns.Count - 1) ' 範囲選択している最終列を取得
Set last = r.Columns(r.Columns.Count).EntireColumn ' 範囲選択している最終列を取得
last.Select
1

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

使用されているセルの最大範囲を取得するにはUsedRangeを入力します。

その範囲に「範囲の最終列を取得」の方法で最終列を取得できます。


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

最大範囲とはシートに入力されている一番上、下、左、右のセルの範囲です。書式設定されているセルも含みます。

2
  • 目次
    • 最終列を取得する