在单元格中输入公式会产生应用程序定义或对象定义的错误

Entering formula in a cell generates Application-defined or object-defined error

我在网上搜索了解决方案并重新编码 VBA 多次。 我最终手动填充了一个字符串(以位为单位,因为我总是错误地计算引号):

PKHNTString = "=SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);" 
PKHNTString = PKHNTString + """ "";""" 
PKHNTString = PKHNTString + """)"

这会产生一个包含以下内容的字符串: =SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);" ";"") 可以在本地变量中找到: : PKHNTString : "=SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);" ";"")" : String

如果我将这个确切的值粘贴到单元格中,它将起作用(删除空格并将所有内容转换为大写),但是当我通过 VBA 将此公式放入单元格中时,如下所示:

NWS.Cells(j, 48).Formula = PKHNTString

我收到错误:运行-时间错误“1004”应用程序定义或对象定义的错误。

如有任何帮助,我们将不胜感激!

TIA, 威廉

您已指定 semi-colon (;) 作为公式中的参数分隔符。通过 VBA,无论当前的区域设置如何,您始终需要为此使用逗号。然而,.FormulaLocal 确实需要列表分隔符的本地化版本。

因为区域设置在 PC 之间可能会有所不同,所以最好使用 .Formula 成员而不是 .FormulaLocal - 否则你必须使用代码来确定要使用的正确列表分隔符(可以使用一些 API calle,但它比仅使用 .Formula 更有效。

因此,要么使用 .FormulaLocal,要么替换“;”带“,”(推荐)。

您必须转义 PKHNTString 中的每个内部 "(引号)。目前,VBA 正在尝试将 =SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE); 作为公式插入并且不知道 ;"") 是什么. 在单元格中插入公式时,您的 PKHNTString 必须是:

"=SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);"" "";"""")"

通过 VBA...

输入带有 " 的公式并不容易