Принуждение Excel к обновлению расчета - PullRequest
0 голосов
/ 22 декабря 2018

В моем проекте есть функция импорта, которая заполняет информацию на моем листе, которая не имеет прямого отношения к этой проблеме.B20 - это выпадающий список, который выбирает пользователь.C20 имеет формулу =IF(B20<>"",CoFunction(B20),""), которая содержит пользовательскую функцию, которая запускается после того, как пользователь выбирает что-то в B20.

Моя проблема в том, что после того, как пользователь импортирует эту информацию, он корректно заполняет всю информацию, но значение вС20 не обновляет.Пользовательская функция не запускается.

Я пробовал множество решений, чтобы заставить ее вычислять, и единственное, что работает, - это активировать лист и затем установить значение B20 для себя.Мой вопрос, если кто-нибудь знает лучший способ сделать это.Это также можно сделать вручную, выбрав нужное значение в B20.

enter image description here

Function COFunction(range1 As Range)
'Application.Volatile

If InStr(range1, "Panel") Then
COFunction = [VLOOKUP(B20,'Quote Sheet'!B13:C23,2,0) - 'Quote Sheet'!E50]
Exit Function
Else
Address = Replace(range1, Chr(34), Chr(34) & Chr(34)) 'Chr(34) is a double quote (")
COFunction = Evaluate("VLOOKUP(""" & Address & """, 'Prices'!A15:B150,2,0)")
Exit Function
End If
End Function

Ответы [ 2 ]

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

Я понял это.Мой B20 в vlookup не указывал на конкретный лист.Как только я изменил это, это работало должным образом.Спасибо всем за совет.

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

Быстрый обходной путь: нажмите F9 после завершения операции импорта данных (чтобы заставить Excel пересчитать все ячейки с формулами).

Более чистое решение: добавьте строку Application.Calculate в концеПодпрограмма VBA, которая выполняет операцию импорта данных.

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