В Excel я использую следующее, чтобы очистить ячейку E5 и заменить ее словом name.

Sheets("Invoice").Range("E5") = "Name"

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

Sheets("Invoice").Range("G11") = "=VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)"

Проблема в том, когда я использую,

Sheets("Invoice").Range("G11") = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

Я получаю ошибку отладки, и единственное, что я могу понять, это то, что кавычки, которые у меня есть в центре кода, играют хаос с кавычками, которые они используют в начале и конце кода VB.

2 ответа2

0

В VBA " используется, чтобы заключить строку. Чтобы использовать " внутри строки, используйте "" . Что не так в вашей формуле, так это то, что VBA преобразует две средние кавычки в одну. Если вы замените "" в середине на """" , вам будет хорошо идти.

Смотрите эту ссылку переполнения стека для справки.

0

Если просто изменить кавычки с "" на "" "" не удается, то, возможно, вам следует попробовать установить свойство value объекта range, а не сам объект range.

Sheets("Invoice").Range("G11") = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

Вы пытаетесь установить для объекта Range строковое значение вашего уравнения. Что вы, вероятно, хотите сделать, это установить для свойства .text, .value или .formula значение "name" или вашу формулу. (также как @agtoever упомянул, что вы должны изменить "" на "" "")

Попробуйте это так:

Sheets("Invoice").Range("G11").value = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"""",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

Использование .formula или .text также может работать, но я только что посмотрел на одну из моих рабочих книг, и вот как она у меня работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .