如果您正在工作表中,则知道可以按Ctrl + End跳到工作表中的最后一个单元格。快捷方式选择一个单元格,该单元格表示包含数据的最后一列与包含数据的最后一行的交集。因此,如果您拥有数据的最后一列是F列,而您拥有数据的最后一行是第27行,那么Ctrl + End将选择单元格F27。

要从宏执行相同的任务,请使用一个非常简单的命令,如下所示:

Sub FindLast1()

ActiveCell.SpecialCells(xlLastCell).Select End Sub

这在功能上与按Ctrl + End相同。但是(这是一个大问题),Excel不会动态跟踪工作表中最后使用的行和列。例如,假设您打开一个工作簿,按Ctrl + End,然后转到单元格F27。如果然后删除三行一列,则希望Ctrl + End将您带到单元格E24。没有仍然需要您进入单元格F27,直到您保存工作簿并重新打开它。

同样的问题也会影响FindLast1宏中显示的宏代码。无论您在当前会话中删除了哪些列或行,它都会带您到“最高”单元格。

所需要的是一种重置“最后一个单元格”指示器的方法,就像您已经保存并重新打开工作簿一样。没有执行此操作的固有宏命令,但是有一种方法可以强制Excel进行重置。您需要做的就是按如下所示调整宏:

Sub FindLast2()

x = ActiveSheet.UsedRange.Rows.Count     ActiveCell.SpecialCells(xlLastCell).Select End Sub

此宏始终将您带到适当的单元格,它的工作原理与您期望Ctrl + End始终可以工作一样。之所以起作用,是因为显然Excel在计算工作表中的行数的Count属性时,总是重置“最后一个单元格”指示器。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11526)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: