Получение Excel для обновления данных на листе из VBA
Как вы получаете данные электронных таблиц в Excel для пересчета себя из VBA, без kluge просто изменения значения ячейки?
5 ответов
следующие строки сделают трюк:
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
Edit: The .Метод Calculate () не будет работать для всех функций, я тестировал его на листе с функциями надстройки массива. Производственный лист, который я использую, достаточно сложен, я не хочу пробовать и тестировать .Метод CalculateFull (), поэтому он может работать.
это должно сделать трюк...
'recalculate all open workbooks
Application.Calculate
'recalculate a specific worksheet
Worksheets(1).Calculate
' recalculate a specific range
Worksheets(1).Columns(1).Calculate
иногда Excel будет икать и нуждается в старте, чтобы повторно применить уравнение. Это происходит в некоторых случаях при использовании пользовательских формул.
убедитесь, что у вас есть следующий скрипт
ActiveSheet.EnableCalculation = True
применить уравнение выбора.
Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula
затем это может быть зациклено по мере необходимости.
вы также можете попробовать
Application.CalculateFull
или
Application.CalculateFullRebuild
Если вы не против перестроить все открытые книги, а не только активный рабочий лист. (CalculateFullRebuild
также перестраивает зависимости.)
у меня была проблема с отключением фонового изображения (черновик водяного знака) в VBA. Мое изменение не появлялось (которое было выполнено с Sheets(1).PageSetup.CenterHeader = ""
метод) - поэтому мне нужен был способ обновления. The ActiveSheet.EnableCalculation
подход частично сделал трюк, но не покрыл неиспользуемые ячейки.
В конце концов я нашел то, что мне нужно, с помощью одного лайнера, который заставил изображение исчезнуть, когда оно больше не было установлено :-
Application.ScreenUpdating = True