Форум по VBA, Excel и Word

VBA, Excel => VBA, макросы в Excel => Тема начата: milahka от 06 ноября 2018, 13:53

Название: Excel VBA Макросы: Ошибка 1004 метод range... при использовании в макросе формулы.
Отправлено: milahka от 06 ноября 2018, 13:53
Изучаю макросы, делаю подстановку значений по критерию из первого столбца. Пробую через ВПР. Выходит ошибка 1004.
Может и не очень правильно, если подскажите другое решение, буду благодарна.

Макрос вставляет на активный лист (активным листом должен быть лист 'Таблица'), в столбец L формулу.
Формула берёт табельный номер из листа 'Таблица', из столбца A и ищет этот табельный номер на листе 'Лист3', в столбце A. Если найден табельный номер, то на лист 'Таблица' вставляются данные из листа 'Лист3' из найденной строки из столбца 3. Если не найдено, то формула подставляет значение ПП.

Sub Формула()
Dim ILastRow As Long
ILastRow = Cells(Rows.Count, 1).End(xlUp).Row
   Range(L2 & ":L" & ILastRow).FormulaR1C1 = "=IF(ISNA(VLOOKUP(R2C[-11]:R487C[-11],Лист3!R1C[-11]:R73C[-9],2,0)),""ПП"",VLOOKUP(R2C[-11]:R487C[-11],Лист3!R1C[-11]:R73C[-9],3,0))"
   Range(L2 & ":L" & ILastRow).Value = Range(L2 & ":L" & ILastRow).Value 'вставляет значение
  End Sub

[вложение удалено администратором]
Название: Re: Excel VBA Макросы: Ошибка 1004 метод range... при использовании в макросе формулы.
Отправлено: Администратор от 06 ноября 2018, 14:43
L2 нужно заключить в кавычки:

Sub Формула()
    Dim lr As Long
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    Range("L2:L" & lr).FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(R2C[-11]:R487C[-11],Лист3!R1C[-11]:R73C[-9],2,0)),""ПП"",VLOOKUP(R2C[-11]:R487C[-11],Лист3!R1C[-11]:R73C[-9],3,0))"
    Range("L2:L" & lr).Value = Range("L2:L" & lr).Value 'вставляет значение
End Sub

Возможно вы бы увидели проблему, если бы у вас была включена опция 'Option Explicit': https://forumvba.ru/index.php?topic=402.0
Название: Re: Excel VBA Макросы: Ошибка 1004 метод range... при использовании в макросе формулы.
Отправлено: milahka от 07 ноября 2018, 06:35
Спасибо вам большое за очень быстрый ответ!!!