【VBA】最終列を取得する

この記事では
 ・最終列を取得する方法
を記載します!

最終列の取得方法は
 ①左から右へ見ていく方法
 ②右から左へ見ていく方法
の2つがあります!

基本は「①左から右へ見ていく方法」を
使用すれば良いです!

「①左から右へ見ていく方法」で上手くいかない場合に、
「②右から左へ見ていく方法」を使用します!

PR

前提

ここでは例として、
 ・シート「sample」の2行目(見出し)の
 ・最終列(5列目)を取得
します。

最終列は5列目
最終列は5列目
PR

最終列を取得する(①左から右へ見ていく)

起点となるセル(開始と開始)は決まっていることが多いと思います。

ここでは起点をセル「B2」にするために、
 ・開始を定数「START_ROW」で「2」
 ・開始を定数「START_COLUMN」で「2」
と定義します。

Option Explicit

Sub sample()
    
    '開始行と開始列を指定
    Const START_ROW As Long = 2
    Const START_COLUMN As Long = 2
    
    Dim lastColumn As Long
    
    '最終列を取得する(左から右へ見ていく)
    lastColumn = Worksheets("sample").Cells(START_ROW, START_COLUMN).End(xlToRight).Column
    
    MsgBox ("最終列は『" & lastColumn & "』列目です!")
    
End Sub

「Endプロパティ」の引数に「xlToRight」を指定します。

上記の処理は
 ・「Worksheets(“シート名”).Cells(”XXX”)」により「Rangeオブジェクト」を取得して、
 ・「Rangeオブジェクト」の「Endプロパティ」によりさらに「Rangeオブジェクト」を取得して、
 ・「Rangeオブジェクト」の「Columnプロパティ」により「列番号(=最終列)」を取得する

という流れです。


上記を実行すると、最終列が取得できたことを確認できます。

最終列は5列目(=E列)
最終列は5列目(=E列)
PR

最終列を取得する(②右から左へ見ていく)

空白列がある場合、「右から左へ見ていく方法」では最終列を取得することが出来ません。

3列目(=C列)が最終列と判断されてしまう
3列目(=C列)が最終列と判断されてしまう

空白列がある場合は、「右から左へ見ていく方法」で最終列を取得します。

「開始行」は同様に定数「START_ROW」で「2」と定義します。

Option Explicit

Sub sample()
    
    '開始行を指定
    Const START_ROW As Long = 2
    
    Dim lastColumn As Long
    
    '最終列を取得する(右から左へ見ていく)
    lastColumn = Worksheets("sample").Cells(START_ROW, Columns.COUNT).End(xlToLeft).COLUMN
    
    MsgBox ("最終列は『" & lastColumn & "』列目です!")
    
End Sub

「Endプロパティ」の引数に「xlToLeft」を指定します。

「Columns.COUNT」は最大列数(=16,384)を示します。


上記を実行すると、最終列が取得できたことを確認できます。

最終列は5列目(=E列)
最終列は5列目(=E列)

ここでの「右から~」とは「最大列数(=16,384から~)」という意味です。

PR

参考①

以下の記事で、最終を取得する方法を紹介しています。
あわせてご確認ください。

PR

参考②

上記のVBAコード使用した以下の詳細は、公式サイトをご確認ください。

●「Worksheets(“シート名”).Cells(”XXX”)」


●「Rangeオブジェクト」の「Endプロパティ」


●「Rangeオブジェクト」の「Columnプロパティ」