在 Excel 中,我使用以下命令清除单元格 E5 并将其替换为单词名称。
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 代码开头和结尾使用的引号产生了严重破坏。
答案1
在 VBA 中,a"
用于括住字符串。要"
在字符串中使用 a,请使用""
。公式中的错误在于 VBA 将中间的两个引号转换为一个引号。如果您将""
中间的 替换为""""
,那么应该就可以了。
看此 Stack Overflow 链接以供参考。
答案2
如果仅将引号从“”更改为“”“”不能解决问题,那么您可能应该尝试设置范围对象的值属性,而不是范围对象本身。
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 对象设置为方程的字符串值。您可能想要做的是将。文本,。价值, 或者。公式属性等于“名称”或你的公式。(也像@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)))"
使用。公式或者。文本也许也可以,但我只是看了我的其中一本工作簿,这就是我的工作方式。