Необходимо приостановить сценарий VBA при обновлении ссылок - PullRequest
0 голосов
/ 14 декабря 2018

Основная проблема, кажется, в подпроцедуре.Для простоты я поместил это в основную процедуру: Проблема, с которой я сталкиваюсь, заключается в следующем коде:

Sub US_Sub01()

Dim NAtotal As Integer

NAtotal = Worksheets("Dashboard").Cells(20, "C").Value

MsgBox(“NAtotal”) 'Показывает, сколько оставшихся ссылок необходимо обновить.Начинается с 4540.

Do Until NAtotal = 0 'Этот цикл должен продолжаться до тех пор, пока NAtotal не достигнет нуля.

NAtotal = Worksheets("Dashboard").Cells(20, "C").Value

DoEvents

Loop

NAtotal не изменяется от 4540 и никогда не ведет обратный отсчет.Если я сломаю макросоту, C20 немедленно обновится до нуля.

Есть предложения?

Спасибо, Стив

1 Ответ

0 голосов
/ 14 декабря 2018

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

Обновить формулы: Application.Calculate

Обновить ссылки: ThisWorkbook.UpdateLink

ЕслиВы хотите обновить статус для этого процесса, вам нужно будет пройтись по каждой ячейке в рабочей книге и использовать такой код для каждой ячейки:

ThisWorkbook.Worksheets("Sheet1").Range("A1").Calculate

Затем установите Worksheets("Dashboard").Cells(20, "C").Value = total cells - loop count, но я думаю, что это замедлит ваш кодслишком много, чтобы быть полезным, но дайте мне знать, если вы хотите, и я могу создать код.

Если вы хотите что-то сообщить пользователю, что лист обновляется, вы можете сделать что-то вроде этого:

Excel.Application.StatusBar = "Updating Links & Formulas"
'Changes the "Ready in the status bar to what you want it to say
Application.Calculate 'Calculate Formulas
ThisWorkbook.UpdateLink 'Update Links
Excel.Application.StatusBar = False 'Changes back to "Ready" status

Простое добавление :Do Events в конец вашего Set ActiveWKB = Workbooks.Open("Sub01.xlsm") тоже может сработать.

...