- 公開日:
Excel VBAで最終列を取得する方法
この記事では、Excel VBAで最終列を取得する方法をご紹介します。
最終列を取得するにはショートカットキーやジャンプ機能を使う方法もありますが、空白列がある場合は、VBAを使うと一回の操作でできるので便利です。
以下では、Excel VBAで最終列を取得するコードを紹介しています。
開発タブを表示させる
今回は、VBAを使用して最終列を取得します。上記の画像のような「開発」タブが表示されていない場合は、「開発」タブを表示させましょう。
詳細は、以下の記事を参考にしてみてください。
最終列を取得するコード
VBAを使って、最終列をダイアログボックスに表示するコードを下記に記載するので、コピーして使用してください。
詳しい方法は、下記「ダイアログボックスに表示して最終列を取得する方法」セクションでご紹介しています。
Sub ダイアログボックスに表示して最終列を取得する()
Dim lastColumn As Long
Dim lastColumnAlpha As String
Dim lastCell As Range
' 最終行を取得するシートを指定する(ここではActiveSheetを使用しています)
Set lastCell = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)
' 最終列の番号を取得
lastColumn = lastCell.Column
' 列番号をアルファベットに変換
lastColumnAlpha = ConvertToLetter(lastColumn)
' 結果を表示
MsgBox "最終列は " & lastColumnAlpha & " です。"
End Sub
Function ConvertToLetter(ByVal columnNumber As Long) As String
Dim dividend As Long
Dim modulo As Long
Dim columnName As String
dividend = columnNumber
columnName = ""
While dividend > 0
modulo = (dividend - 1) Mod 26
columnName = Chr(65 + modulo) & columnName
dividend = (dividend - modulo) \ 26
Wend
ConvertToLetter = columnName
End Function
ご紹介したコードを使うと下記の画像のように、シート内でデータが入力された最終列をダイアログボックスで確認することが出来ます。
Excel VBAで最終列を取得する方法
VBAを使って最終列を取得する方法をご紹介します。
最終列を取得してダイアログボックスに表示する方法
最終列が何列なのかアルファベットでダイアログボックスに表示する方法をご紹介します。ただし、途中に空白列がある場合は正しく取得できないので、下記「空白列がある場合に最終列を取得する方法」セクションのコードを参考にしてください。
①開発タブ、②Visual Basicの順に選択します。
「Microsoft Visual Basic for Applications」が開きました。①挿入タブ、②標準モジュールの順に選択します。
「標準モジュール」が開きました。上記セクション「最終列を取得するコード」をコピーして貼り付けてください。
作成したマクロを保存します。①ファイルタブ、②上書き保存の順に選択します。
「名前を付けて保存」ダイアログボックスが表示されました。①保存先(例:デスクトップ)を選択します。②ファイル名(例:ダイアログボックスに表示して最終列を取得する)を入力し、③ファイルの種類でExcelマクロ有効ブックを選択し、④保存ボタンを押します。
Excelシートに戻ります。①開発タブ、③マクロの順に選択します。
「マクロ」ダイアログボックスが表示されました。①作成したマクロ(例:ダイアログボックスに表示して最終列を取得する)を選択し、②実行ボタンを押します。
「Microsoft Excel」ダイアログボックスが表示されました。VBAを使って最終列(例:AA列)をダイアログボックスに表示することができました。OKボタンを押します。
今回は、マクロが合っているか確認するために手動で最終列まで移動します。AA列が最終列になっていることを確認できました。
空白列がある場合に最終列を取得する方法
上記の画像のように、空白列がある場合は左から数えると空白列の前の列が最終列(例:C列)だと判断されてしまいます。
そのため、右から数えて「最初にデータがある列」を取得するコードを使用します。
方法の詳細は以下のとおりです。
①開発タブ、②Visual Basicの順に選択します。
「Microsoft Visual Basic for Applications」が開きました。
①挿入タブ、②標準モジュールの順に選択します。
「標準モジュール」が開きました。
以下のコードをコピーしてモジュールに貼り付けてください。
Sub 空白列がある場合に最終列を取得する()
Dim ws As Worksheet
Dim lastColumn As Long
Dim lastColumnAlphabet As String
' 対象のシートを指定します
Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を適宜変更
' 最も右側の列を取得します
lastColumn = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
MatchCase:=False).Column
' 列番号をアルファベットの列番号に変換します
lastColumnAlphabet = ConvertToColumnAlphabet(lastColumn)
' 最終列を出力します
MsgBox "最終列: " & lastColumnAlphabet
End Sub
Function ConvertToColumnAlphabet(columnNumber As Long) As String
Dim dividend As Long
Dim columnAlphabet As String
Dim modulo As Long
columnAlphabet = ""
dividend = columnNumber
While dividend > 0
modulo = (dividend - 1) Mod 26
columnAlphabet = Chr(modulo + 65) & columnAlphabet
dividend = (dividend - modulo) \ 26
Wend
ConvertToColumnAlphabet = columnAlphabet
End Function
上記のコードは対象シートを「Sheet1」にしていますので、シート名が違う場合はダブルクォーテーションの中を変えて使用してください。
作成したマクロを保存します。
①ファイルタブ、②上書き保存の順に選択します。
「名前を付けて保存」ダイアログボックスが表示されました。
①保存先(例:デスクトップ)を選択し、②ファイル名(例:空白列がある場合に最終列を取得する)を入力します。③ファイルの種類でExcelマクロ有効ブックを選択し、④保存ボタンを押します。
Excelシートに戻ります。
①開発タブ、②マクロの順に選択します。
「マクロ」ダイアログボックスが表示されました。
①作成したマクロ(例:空白列がある場合に最終列を取得する)を選択し、②実行ボタンを押します。
「Microsoft Excel」ダイアログボックスが表示されました。
VBAを使って最終列(例:AD列)をダイアログボックスに表示することができました。
OKボタンを押します。
今回は、マクロが合っているか確認するために手動で最終列まで移動します。
AD列が最終列になっていることを確認できました。
列をアクティブにして最終列を取得する方法
最終列にジャンプするので、データを追加したい場合などにおすすめです。
以下では、列をアクティブにして最終列を取得する方法をご紹介します。
①開発タブ、②Visual Basicの順に選択します。
「Microsoft Visual Basic for Applications」が開きました。
①挿入タブ、②標準モジュールの順に選択します。
「標準モジュール」が開きました。
以下のコードをコピーしてモジュールに貼り付けてください。
Sub ActivateLastColumn()
Dim lastColumn As Long
Dim lastCell As Range
' 最終行を取得するシートを指定する(ここではActiveSheetを使用しています)
Set lastCell = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)
' 最終列の番号を取得
lastColumn = lastCell.Column
' 最終列をアクティブにする
Columns(lastColumn).Activate
End Sub
上記のコードは、最終列をアクティブにしてジャンプするコードです。
作成したマクロを保存します。
①ファイルタブ、②上書き保存の順に選択します。
「名前を付けて保存」ダイアログボックスが表示されました。
①保存先(例:デスクトップ)を選択し、②ファイル名(例:列をアクティブにして最終列を取得する方法)を入力します。③ファイルの種類でExcelマクロ有効ブックを選択し、④保存ボタンを押します。
「マクロ」ダイアログボックスが表示されました。
①作成したマクロ(例:列をアクティブにして最終列を取得する)を選択し、②実行ボタンを押します。
VBAを使って列をアクティブにして最終列を取得することができました。