Если вы работаете на листе, вы знаете, что можете нажать Ctrl + End, чтобы перейти к последней ячейке на листе. Что делает ярлык, так это выбор ячейки, которая представляет собой пересечение последнего столбца, содержащего данные, и последней строки, содержащей данные. Таким образом, если последний столбец, в котором у вас есть данные, — это столбец F, а последняя строка, в которой у вас есть данные, — это строка 27, тогда Ctrl + End выберет ячейку F27.

Чтобы выполнить ту же задачу из макроса, вы используете очень простую команду, как показано здесь:

Sub FindLast1()

ActiveCell.SpecialCells(xlLastCell).Select End Sub

Функционально это то же самое, что и нажатие Ctrl + End. Однако (и это большая проблема) Excel не отслеживает динамически, какие строки и столбцы используются на листе последними. Например, предположим, что вы открываете книгу, нажимаете Ctrl + End, и вы попадаете в ячейку F27. Если вы затем удалите 3 строки и один столбец, вы ожидаете, что Ctrl + End приведет вас к ячейке E24. Это не так; он по-прежнему переводит вас в ячейку F27, пока вы не сохраните книгу и не откроете ее повторно.

Эта же проблема влияет на код макроса, показанный в макросе FindLast1; он переместит вас в «самую высокую» ячейку, независимо от того, какие столбцы или строки вы удалили во время текущего сеанса.

Что нужно, так это способ сбросить индикатор «последней ячейки», как если бы вы сохранили и повторно открыли книгу. Не существует встроенной макрос-команды, которая бы это делала, но есть способ заставить Excel выполнить сброс. Все, что вам нужно сделать, это настроить макрос следующим образом:

Sub FindLast2()

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

Этот макрос всегда переводит вас в нужную ячейку — он работает так, как вы ожидаете, что Ctrl + End всегда будет работать. Это работает, потому что, очевидно, Excel, когда он вычисляет свойство Count для количества строк на листе, всегда сбрасывает индикатор «последней ячейки».

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2271) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Finding_the_Last-Used_Cell_in_a_Macro [Поиск последней использованной ячейки в макросе].