Поиск последней использованной ячейки в макросе (Microsoft Excel)
Если вы работаете на листе, вы знаете, что можете нажать 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 [Поиск последней использованной ячейки в макросе]
.