Когда вы пишете макрос, он предназначен для запуска всякий раз, когда вы решите запустить его. Что, если вам нужно разработать макрос, который будет запускаться всякий раз, когда что-то изменяется в вашем листе? Что, если вы хотите, чтобы макрос запускался автоматически? Это особенно необходимо, если вы создаете настраиваемую функцию, которую хотите использовать в ячейках рабочего листа.

Вот где пригодится метод 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 [Принудительный запуск макроса при пересчете рабочего листа].