Sub Main()
Debug.Print Application.Interactive
Application.Interactive = False
Debug.Print Application.Interactive
Application.Interactive = True
Debug.Print Application.Interactive
End Sub
Не обязательно для меня ... Попробуйте это и see more here
Поскольку вы обнаружили причину провалив вывод может быть то, что Application.Volatile
должен быть установлен в ложь на функции, использует его, потому что режим Interactive
блокирует пользовательский интерфейс, а Volatile
вычисляет все, основываясь на пользовательском вводе. Пока вход пользователя заблокирован, вы не можете ожидать функции, которая оценивает ввод пользователя для работы. Один исключает другого - надеемся, что это имеет смысл.
Кроме того, проверьте свои операторы on error resume next
или on error goto <label>
, так как это может привести к пропуску некоторых из кода, поэтому Application.Interactive = True
никогда не будет выполнен.
Ah wait up ... Я нахожу, что проблема заключается только в том случае, когда включен Autofilter. (такое же поведение в 2010 году) –
Подходим ближе - у меня есть функция, помеченная как «Application.Volatile», если я прокомментирую эту строку - она работает нормально. Эта функция используется в ячейках заголовка столбца для отображения активного уравнения автоматического фильтра. –
Red herring - см. Ответные комментарии –