Получение 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