Excel VBA Летучие функции
По умолчанию, ОДС ( ссылка: / VBA-примеры-определяемые пользователем функция [Определенные пользователем функции]
) в Excel VBA не летучий. Они пересчитываются только тогда, когда какой-либо из аргументов функции меняются. Летучая функция будет пересчитана всякий раз, когда расчет происходит в любых ячейках на листе. Давайте посмотрим на простой пример, чтобы объяснить это немного больше.
-
Откройте редактор Visual Basic и выберите Вставка, модуль.
Создайте функцию под названием MYFUNCTION, которая возвращает сумму выбранной ячейки и ячейки ниже этой ячейки.
-
Добавьте следующие строки кода:
Function MYFUNCTION(cell As Range) MYFUNCTION = cell.Value + cell.Offset(1, 0).Value End Function
-
Теперь вы можете использовать эту функцию, так же как и любой другой функции Excel.
-
Это энергонезависимая функция. Энергонезависимые функции только пересчитываются при любом изменении аргументов функции. Измените значение ячейки B2 до 8.
-
Теперь измените значение ячейки В3 до 11.
Объяснение: нелетучая функция не пересчитываются, когда любая другая ячейка на листе изменяется.
-
Обновление функции следующим образом, чтобы функция летучей:
Function MYFUNCTION(cell As Range) Application.Volatile MYFUNCTION = cell.Value + cell.Offset(1, 0).Value End Function
-
Изменение значение ячейки B3 до 12.
Результат:
Примечание: вам нужно ввести функцию снова, чтобы сделать его летучим (или обновить его, поместив курсор в строке формул и нажать ввод).