Определение последней измененной ячейки на листе (Microsoft Excel)
Джон задается вопросом, есть ли в VBA способ определить последнюю ячейку, которая была изменена пользователем. Он не хочет знать, была ли ячейка изменена макросом, а конкретно пользователем.
Ответ — да, вроде того. Вы можете использовать событие Worksheet_Change для написания обработчика, который будет записывать, когда какая-либо конкретная ячейка на листе изменяется. Макрос, который делает это, может быть довольно простым, например, этот:
Private Sub Worksheet_Change(ByVal Target As Range) Application.StatusBar = Target.Address End Sub
Макрос просто помещает адрес последнего изменения в строку состояния. Вы можете изменить макрос так, чтобы он сохранял адрес в глобальной переменной (объявленной вне обработчика событий) следующим образом:
Dim sAddr As String Private Sub Worksheet_Change(ByVal Target As Range) sAddr = Target.Address(False, False) End Sub
Затем вы можете использовать обычный макрос для получения адреса, хранящегося в переменной sAddr, и делать с ним все, что хотите.
Что касается обеспечения того, чтобы обработчик событий не записывал никаких изменений, сделанных макросами, единственный способ сделать это — отключить обработку событий перед выполнением любой макрос-команды, которая изменит рабочий лист. Например, следующее изменение свойства EnableEvents можно использовать до и после команды, изменяющей содержимое ячейки A1:
Application.EnableEvents = False Range("A1") = "Hello" Application.EnableEvents = True
Если обработка событий отключена, обработчик событий Worksheet_Change не будет запущен, и адрес «последнего изменения» не будет обновлен. В результате вы отслеживаете только изменения, сделанные пользователями, а не изменения, сделанные макросами.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (11475) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Identifying_the_Last_Cell_Changed_in_a_Worksheet [Определение последней измененной ячейки в листе]
.