Hello Stackoverflow朋友,
我想用一个我想通过VBA插入的公式挣扎1小时:
Formula = "=IFERROR(VLOOKUP(Q" & j & ";Table1[#All];2;FALSE);"""")"
ThisWorkbook.Worksheets("Sheet1").Cells(j, "AE").FormulaArray = Formula
我收到以下错误消息:
运行时错误'1004' - 应用程序定义或对象定义错误
括号或双引号是否有问题?
谢谢!
答案 0 :(得分:4)
用逗号替换分号:
Formula = "=IFERROR(VLOOKUP(Q" & j & ",Table1[#All],2,FALSE),"""")"
OpenOffice使用分号分隔函数参数,Excel通常使用逗号,始终在以上述方式设置公式时使用逗号。
答案 1 :(得分:2)
根据区域设置,列表分隔符(也用于分隔函数中的参数)是分号或逗号。在将公式键入单元格时适用。
当打开文件时,Excel会根据当前计算机的区域设置动态调整列表分隔符(和函数名称)。
因此,如果具有德语区域设置且具有列表分隔符; 的用户保存文件,则具有美国区域设置和列表分隔符,的用户将打开在同一个文件中,Excel会自动调整公式中的德语列表分隔符。
但是,在编写VBA时,您始终需要使用美国英语约定作为列表分隔符,即逗号。
答案 2 :(得分:0)
在VBA中也可以使用任何语言进行编程时-最好不要将用户绑定到特定的区域设置或特定的excel版本。 所以代替这个:
Formula = "=IFERROR(VLOOKUP(Q" & j & ";Table1[#All];2;FALSE);"""")"
ThisWorkbook.Worksheets("Sheet1").Cells(j, "AE").FormulaArray = Formula
在确定确切的用户环境时,最好使用这种方法:
s = Application.International(xlListSeparator)
Formula = "=IFERROR(VLOOKUP(Q" & j & s +"Table1[#All]" + s + "2" + s + "FALSE)" + s + """"")"
ThisWorkbook.Worksheets("Sheet1").Cells(j, "AE").FormulaArray = Formula
p.s。我没有检查方括号等的公式,只是指示了列表分隔符的正确用法,以及如何以正确的方式在单元格中插入带有VBA代码的公式。
同样,如前一篇文章所述-Excel可能会在您打开公式时自动更改该公式。但是excel不会自动更改VBA代码,因此请注意并注意VBA中的正确代码。