Мой макрос не может выполнить vlookup - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть комплекс, который выполняет многократное вставление копий в разные файлы, однако я получаю сообщение об ошибке в следующей строке, и ошибка: объект не поддерживает это свойство или метод

.Range("Q" & i).Value="if(P" & i & "=" & Chr(34) & "Y" & Chr(34) & ",vlookup(A" & i & "," & OutShVar & "!$A:$BP,68,0)," & Chr(34) & "Not Available" & Chr(34) & ")"

(я копирую вставки частей, которые имеют отношение к вопросу)

  Set OutShVar=ThisWorkbook.Worksheets("MasterReport")
  Set RngConcat=OutShVar.Range("A:A")

  Set wMain=Workbooks.open(ForePath & sfn)
  Call OpenLink 'Performs tasks on another report after opening it


  'After doing a bunch of things on the OpenLink report,
    'i want to do a vlookup on that report that will take things from the excel
    'workbook where the macro is i.e., OutShVar and RngCon'

   'On Master list/Refresh
   if .Range("P" & i).Value = "N" Then
   .Range("Q" & i).Value="Not inscope"
  Else
   If not IsError(Application.Match(.Range("A" & i).Value,RngConcat,0) Then
    .Range("Q" & i).Value="if(P" & i & "=" & Chr(34) & "Y" & Chr(34) & ",vlookup(A" & i & "," & OutShVar & "!$A:$BP,68,0)," & Chr(34) & "Not Available" & Chr(34) & ")"
    'This is where the problem is, not sure if this is right way to do the vlookup?

1 Ответ

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

Чтобы назначить формулу, используйте свойство Formula объекта Range.Кроме того, используйте свойство Имя рабочего листа, чтобы использовать его, а не объект рабочего листа в формуле.

Приведенный ниже код должен работать нормально.

.Range("Q" & i).Formula = "= IF(P" & i & "=" & Chr(34) & "Y" & Chr(34) & ",VLOOKUP(A" & i & ",'" & OutShVar.Name & "'!$A:$BP,68,0)," & Chr(34) & "Not Available" & Chr(34) & ")"

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

. Textдает строку, представляющую то, что отображается на экране для ячейки.Использование .Text обычно является плохой идеей, потому что вы можете получить ####

. Value2, который даст вам базовое значение ячейки (может быть пустым, строка, ошибка, число (double) или логическое значение)

. Value дает то же самое, что и .Value2, за исключением того, что ячейка была отформатирована как валюта или дата, она дает вам валюту VBA (которая может урезать десятичные разряды) или дату VBA.

Источник: Другой ответ StackOverflow

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