You can use the following basic syntax in VBA to find the last column used in an Excel sheet:
Sub FindLastColumn()
Range("A14") = Cells.Find("*",Range("A1"),xlFormulas,xlPart,xlByColumns,xlPrevious,False).Column
End Sub
This particular example finds the last used column in the current sheet and returns the result in cell A14.
If you would instead like to display the last column in a message box, you can use the following syntax:
Sub FindLastColumn()
Dim LastCol As Long
LastCol=Cells.Find("*",Range("A1"),xlFormulas,xlPart,xlByColumns,xlPrevious,False).Column
MsgBox "Last Column: " & LastCol
End Sub
The following examples shows how to use each of these methods in practice.
Related: VBA: How to Find Last Used Row
Example 1: Find Last Column Using VBA and Display Results in Cell
Suppose we have the following dataset in Excel that contains information about various basketball players:
We can create the following macro to find the last column used in this Excel sheet and display the result in cell A14:
Sub FindLastColumn()
Range("A14") = Cells.Find("*",Range("A1"),xlFormulas,xlPart,xlByColumns,xlPrevious,False).Column
End Sub
When we run this macro, we receive the following output:
Notice that cell A14 contains a value of 2.
This tells us that the last used column in this particular sheet is column 2.
It’s also worth noting that if you have empty columns before a used column, this macro will still find the last used column.
For example, suppose we run the macro on the following dataset:
Cell A14 contains a value of 5 because this is the last column with values in it.
Example 2: Find Last Column Using VBA and Display Results in Message Box
Suppose we would instead like to find the last used column in a sheet and display the column number in a message box.
We can create the following macro to do so:
Sub FindLastColumn()
Dim LastCol As Long
LastCol=Cells.Find("*",Range("A1"),xlFormulas,xlPart,xlByColumns,xlPrevious,False).Column
MsgBox "Last Column: " & LastCol
End Sub
When we run this macro, we receive the following output:
The message box tells us that the last used column in the sheet is column 2.
Note: You can find the complete documentation for the VBA Find method here.
Additional Resources
The following tutorials explain how to perform other common tasks in VBA:
VBA: How to Calculate Average Value of Range
VBA: How to Count Number of Rows in Range
VBA: How to Remove Duplicate Values in Range