У меня есть пользовательская функция, написанная на VBA, которая обновляет цвета в нарисованной форме (светофор, состоящий из трех кругов).Вызов в ячейке таблицы выглядит примерно так:
setTrafficLight(A1, "Oval 1", "Oval 2", "Oval 3")
, где A1 - это ячейка, содержащая, например, «зеленый» или «красный».Другими параметрами являются имена фигур.
У меня была проблема с тем, что функция была вызвана и удалила историю отмены (вызов пользовательской функции в Excel отключает более старые записи отмены).Чтобы это исправить, я зарегистрировал пустую функцию отмены через
Application.OnUndo "Undo SetTrafficLight", "undoSetTrafficLight"
. В моей функции setTrafficLight значение Application.Volatile
установлено на False
, поэтому функция не вызывается каждый раз, когда изменяется любое значение на листах.,Но теперь функция даже не вызывается, когда изменяется входное значение в A1.С Application.Volatile = True
это работает, но тогда отмена не работает должным образом.Если я полностью удаляю Application.Volatile
, тогда обновление работает правильно, но можно использовать только один уровень отмены.
Есть идеи, как решить эту проблему?