为什么使用此代码替换公式会导致错误?

为什么使用此代码替换公式会导致错误?

在 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)))"

使用。公式或者。文本也许也可以,但我只是看了我的其中一本工作簿,这就是我的工作方式。

相关内容