VBA VLOOKUP Convert to Values ​​дает # N / A

У меня проблемы с ВПР в моем VBA. Вот пример кода, который я использую:

Sub Macro15()
'
' Macro15 Macro
Dim LR As Long
LR = Cells(Rows.Count, "A").End(xlUp).Row
Range("B1:B" & LR).FormulaR1C1 = _
"=VLOOKUP(RC[-1],'https://internal_sharepoint_address
    /[Vendor_Information.xlsx]Sheet1'!R3C3:R150C18,4,FALSE)"
Range("C1:C" & LR).FormulaR1C1 = _
    "=VLOOKUP(RC[-2],'https://internal_sharepoint_address
/[Vendor_Information.xlsx]Sheet1'!R3C3:R150C18,5,FALSE)"
With Range("B1:C" & LR)
.Value = .Value
End With
End Sub

Проблема в том, что значения в столбцах B и C (формулы ВПР) возвращают значение # N / A.

Однако, если я остановлю код до преобразования формулы в значения (строка «С диапазоном (« B1: C »& LR)»), формула ВПР вернет правильные значения.

Также странно - если я очищаю содержимое столбцов B и C и повторно запускаю приведенный выше код, значения возвращаются нормально. Однако, если я попытаюсь добавить второй цикл в VBA, это НЕ сработает.

Любая мудрость, которую может дать кто угодно, будет огромным подспорьем. Я застрял на этом долгое время, и я просто на грани своего остроумия.

Всем спасибо, Дэвид


person David    schedule 15.11.2010    source источник


Ответы (1)


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

Application.Calculate

Изменить из комментария: я бы предположил, что получение данных поиска из связанной книги на сайте Sharepoint займет некоторое время. Может быть, добавить петли задержки? Можете ли вы создать два отдельных макроса (один заканчивающийся формулами, а второй - начиная со вставки значений) и запускать их отдельно с паузами между ними?

person BradC    schedule 15.11.2010
comment
Привет, Брэд - Спасибо за быстрый ответ! Я попробовал это сделать, добавив Application.Calculate (а затем Application.CalculateFull) прямо перед кодом With Range (B1: C & LR), но все еще без кубиков. Есть другие идеи? - person David; 15.11.2010
comment
@David: не уверен, но я предполагаю, что получение данных поиска из связанной книги на сайте Sharepoint займет некоторое время. Может быть, добавить петли задержки? Можете ли вы создать два отдельных макроса (один заканчивается формулами, а второй - начинать со вставки значений) и запускать их по отдельности с перерывом между ними? - person BradC; 15.11.2010
comment
Брэд, ты официально мой герой. Это сработало; поднятие VLOOKUP в верхнюю часть кода (это была лишь небольшая часть макроса) и запуск второго макроса для преобразования их в значения сработали! Спасибо большое за вашу помощь!!!! - person David; 16.11.2010