3

你好 Stackoverflow 的朋友们,

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

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

我收到以下错误消息:

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

括号或双引号有问题吗?

谢谢!

4

3 回答 3

5

用逗号替换分号:

Formula = "=IFERROR(VLOOKUP(Q" & j & ",Table1[#All],2,FALSE),"""")"

OpenOffice 使用分号分隔函数参数,Excel 通常使用逗号,并且在以上述方式设置公式时始终使用逗号。

于 2013-05-16T09:51:36.037 回答
3

在 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

ps 我没有检查括号等的公式,而只是指出了列表分隔符的正确用法,以及如何以正确的方式在单元格中插入带有 VBA 代码的公式。

同样,正如之前的帖子所说 - excel 可能会在您打开它时自动更改公式。但是,excel 不会自动更改 VBA 代码,因此请注意并注意 VBA 中的正确代码。

于 2018-08-09T15:20:21.513 回答
2

根据区域设置,列表分隔符(也用于分隔函数中的参数)是分号或逗号。这适用于在单元格中键入公式时。

Excel 在打开文件时根据当前计算机的区域设置动态调整列表分隔符(和函数名称)。

因此,如果具有德国区域设置且具有列表分隔符;的用户保存文件,则具有美国区域设置和列表分隔符的用户,打开同一个文件,Excel 将自动调整公式中的德语列表分隔符。

但是,在编写 VBA 时,您将始终需要使用美国英语惯例作为列表分隔符,即逗号。

于 2013-05-16T10:57:43.573 回答