Excel - 使用VBA插入公式

时间:2013-05-16 09:48:17

标签: vba excel-vba excel-formula excel

Hello Stackoverflow朋友,

我想用一个我想通过VBA插入的公式挣扎1小时:

Formula = "=IFERROR(VLOOKUP(Q" & j & ";Table1[#All];2;FALSE);"""")"
ThisWorkbook.Worksheets("Sheet1").Cells(j, "AE").FormulaArray = Formula

我收到以下错误消息:

运行时错误'1004' - 应用程序定义或对象定义错误

括号或双引号是否有问题?

谢谢!

3 个答案:

答案 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中的正确代码。