У меня есть основной файл, в котором есть только некоторые определения и все макросы (назовем его main.xlsm
).Один из макросов обновляет и вносит множество изменений в рабочую книгу (назовем его book_dest.xlsx
).
Книга назначения (book_dest.xlsx
) имеет 2 листа: Downloads
и Dictionary
.Я должен написать формулу в определенной ячейке (назовем это S5) листа Downloads
, который ищет определенное значение ячейки в листе Dictionary
.Итак, если я напишу формулу вручную, это будет примерно так:
=VLOOKUP(G5,Dictionary!$A:$D,4,0)
в ячейке S5.Лист Dictionary
существует, и имя верное.Когда я пишу это вручную, все работает отлично, но когда я пишу это с использованием макроса, то есть
sht_downloads.Range("S5").Formula = "=VLOOKUP(G5,Dictionary!$A:$D,4,0)"
(где sht_downloads
это лист с именем Downloads
(он был определен ранее))
появляется всплывающее окно с сообщением, что Dictionary
не существует, и заставляет меня искать файл.Но Dictionary
это не файл, это имя листа!Я также пытался использовать .FormulaR1C1
, но это не работает.Я также пытался записать макрос, но он говорит, что я использую ту же формулу.
Что я могу сделать?
Редактировать:
У меня есть один файл (main.xlsm), где находится макрос.Используя этот макрос, мне нужно вставить 1 формулу в ячейку другой книги (destination.xlsx) на конкретном листе («Загрузки»).Формула - это просто VLOOKUP на листе «Загрузки», который выполняет поиск на листе под названием «Словарь».Я имею в виду, мне нужно сделать что-то вроде this .
Код выглядит примерно так:
Sub main_dest()
Dim book_dest as Workbook, book_main as Workbook
Dim sht_downloads as Worksheet, sht_main as Worksheet, sht_dictionary as Worksheet
Set book_main = ThisWorkbook
Set book_dest = 'I call a function that opens the file if it's not already open and, if it's open, it just sets it. The function returns a Workbook
Set sht_main = ThisWorkbook.Sheets("main")
Set sht_downloads = book_dest.Sheets("Downloads")
Set sht_dictionary = book_dest.Sheets("Dictionary")
sht_downloads.Activate
With sht_downloads
.Range("S5").Formula = "=VLOOKUP(G5,Dictionary!$A:$D,4,0)"
End With
End Sub
Когда программа переходит на строку sht_downloads.Range("S5").Formula = "=VLOOKUP(G5,Dictionary!$A:$D,4,0)"
,он открывает всплывающее окно «Значения обновления», например этот
Я также пытался
With book_dest
sht_downloads.Range("S5").Formula = "=VLOOKUP(G5,Dictionary!$A:$D,4,0)"
End With
, но не работал.