Получение Excel для обновления данных на листе из VBA - PullRequest
46 голосов
/ 30 сентября 2008

Как вы получаете данные электронной таблицы в Excel для пересчета себя из VBA, без необходимости просто изменять значение ячейки?

Ответы [ 5 ]

56 голосов
/ 30 сентября 2008

Следующие строки сделают трюк:

ActiveSheet.EnableCalculation = False  
ActiveSheet.EnableCalculation = True  

Редактировать: Метод .Calculate() не будет работать для всех функций. Я проверил это на листе с надстройкой функций массива. Используемый мной рабочий лист достаточно сложен, поэтому я не хочу тестировать метод .CalculateFull(), но он может работать.

16 голосов
/ 30 сентября 2008

Это должно сработать ...

'recalculate all open workbooks
Application.Calculate

'recalculate a specific worksheet
Worksheets(1).Calculate

' recalculate a specific range
Worksheets(1).Columns(1).Calculate
7 голосов
/ 04 сентября 2013

Иногда в Excel происходит сбой, и ему нужно начать с начала, чтобы применить уравнение. Это происходит в некоторых случаях, когда вы используете собственные формулы.

Убедитесь, что у вас есть следующий скрипт

ActiveSheet.EnableCalculation = True

Повторное уравнение выбора.

Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula

Это может быть зациклено по мере необходимости.

6 голосов
/ 30 сентября 2008

Вы также можете попробовать

Application.CalculateFull

или

Application.CalculateFullRebuild

если вы не против перестроить все открытые книги, а не только активный лист (CalculateFullRebuild также перестраивает зависимости.)

3 голосов
/ 02 декабря 2014

У меня была проблема с отключением фонового изображения (черновой водяной знак) в VBA. Мое изменение не обнаружилось (что было выполнено методом Sheets(1).PageSetup.CenterHeader = "") - поэтому мне нужен был способ обновить. Подход ActiveSheet.EnableCalculation частично сработал, но не охватил неиспользуемые ячейки.

В конце концов я нашел то, что мне было нужно, с одним вкладышем, который делал изображение исчезающим, когда оно больше не было установлено: -

Application.ScreenUpdating = True

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...