Принудительный запуск макроса при перерасчете листа (Microsoft Excel)
Когда вы пишете макрос, он предназначен для запуска всякий раз, когда вы решите запустить его. Что, если вам нужно разработать макрос, который будет запускаться всякий раз, когда что-то изменяется в вашем листе? Что, если вы хотите, чтобы макрос запускался автоматически? Это особенно необходимо, если вы создаете настраиваемую функцию, которую хотите использовать в ячейках рабочего листа.
Вот где пригодится метод Volatile. Все, что вам нужно сделать, это включить в макрос следующее выражение:
Application.Volatile
Это сообщает Excel, что результаты макроса зависят от значений в рабочем листе и что он должен выполняться всякий раз, когда рабочий лист пересчитывается. Например, рассмотрим следующую пользовательскую функцию:
Function CountCells(MyRange As Range) Dim iCount As Integer iCount = 0 For Each cell In MyRange If cell.HasFormula Then iCount = iCount + 1 End If Next cell CountCells = iCount End Function
Эта функция, если она используется в ячейке, подсчитывает количество ячеек, содержащих формулы в указанном диапазоне. Однако функция будет запускаться только при первом вводе в ячейку или при редактировании ячейки, содержащей формулу. Если вы хотите, чтобы функция пересчитывалась каждый раз при пересчете рабочего листа, вы должны добавить метод Volatile в начало функции:
Function CountCells(MyRange As Range) Dim iCount As Integer Application.Volatile iCount = 0 For Each cell In MyRange If cell.HasFormula Then iCount = iCount + 1 End If Next cell CountCells = iCount End Function
Включение метода Application.Volatile означает, что каждый раз, когда рабочий лист пересчитывается, эта функция (макрос) снова запускается.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (10598) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Forcing_a_Macro_to_Run_when_a_Worksheet_is_Recalculated [Принудительный запуск макроса при пересчете рабочего листа]
.