Written by Allen Wyatt (last updated February 5, 2022)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, 2021, and Excel in Microsoft 365
If you are working in a worksheet, you know that you can press Ctrl+End to jump to the last-cell in the worksheet. The shortcut chooses the cell that represents the intersection of the last column containing data and the last row containing data. Thus, if the last column in which you have data is column F, and the last row in which you have data is row 27, then Ctrl+End will select cell F27.
To do this same task from a macro, you use a very simple command, as shown here:
Sub FindLast1() ActiveCell.SpecialCells(xlLastCell).Select End Sub
This is functionally the same as pressing Ctrl+End. However (and this is a big issue), Excel doesn't dynamically keep track of which rows and columns are the last used in a worksheet. For instance, let's suppose that you open a workbook, press Ctrl+End, and you are taken to cell F27. If you then delete three rows and one column, you would expect that Ctrl+End would take you to cell E24. It doesn't; it still takes you to cell F27 until you save the workbook and reopen it.
This same problem affects the macro code shown in the FindLast1 macro; it will take you to the "highest" cell, regardless of which columns or rows you have deleted during the current session.
What's needed is a way to reset the "last cell" indicator, just as if you had saved and reopened the workbook. There is no intrinsic macro command that does that, but there is a way to force Excel to do the reset. All you need to do is adjust the macro as follows:
Sub FindLast2() x = ActiveSheet.UsedRange.Rows.Count ActiveCell.SpecialCells(xlLastCell).Select End Sub
This macro always takes you to the proper cell—it works as you would expect Ctrl+End to always work. It works because apparently Excel, when it calculates the Count property for the number of rows in the worksheet, always resets the "last cell" indicator. You can also rely on the UsedRange object in a different manner:
Sub FindLast3() ActiveSheet.UsedRange.SpecialCells(xlLastCell).Select End Sub
The result, again, is that the desired last cell is selected.
Note:
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (11526) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, 2021, and Excel in Microsoft 365. You can find a version of this tip for the older menu interface of Excel here: Finding the Last-Used Cell in a Macro.
Best-Selling VBA Tutorial for Beginners Take your Excel knowledge to the next level. With a little background in VBA programming, you can go well beyond basic spreadsheets and functions. Use macros to reduce errors, save time, and integrate with other Microsoft applications. Fully updated for the latest version of Office 365. Check out Microsoft 365 Excel VBA Programming For Dummies today!
Functions are a common programming construct. They help you to create easy ways of processing information and returning a ...
Discover MoreWhen developing macros, you can create subroutines. This is a great way to reuse common code and make your programming ...
Discover MoreNeed to select a range of cells in a column? This tip can help, as it shows how to select from a specific cell all the ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2022-02-05 09:55:28
J. Woolley
The Range.SpecialCells method does not work correctly when referenced directly or indirectly in a user defined function (UDF). For more on this subject, see https://www.excelanytime.com/excel/index.php?option=com_content&view=article&id=86:last-used-row-last-used-column-vba&catid=79&Itemid=475#Use%20End(xlUp)
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2025 Sharon Parq Associates, Inc.
Comments