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

标签 vba excel formula

我在网上搜索了解决方案并重新编写了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);"";"")": 字符串

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

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

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

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

TIA, 威廉

最佳答案

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

由于不同 PC 之间的区域设置可能会有所不同,因此最好使用 .Formula 成员而不是 .FormulaLocal - 否则您必须使用代码来确定要使用的正确列表分隔符(可以通过某些 API 来完成) calle,但它比仅使用 .Formula 需要更多工作。

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

关于vba - 在单元格中输入公式会生成应用程序定义或对象定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34992109/

相关文章:

excel - 如何使用 Excel VBA 将单元格值和文本连接在一起?

VBA 工作表更改多个单元格

vba - 当某些值带有逗号时创建数据验证列表?

azure - 此 Azure Batch Autoscale 公式的含义是什么?

编程语言|如何创建一个类模块来构建对象并将它们分配给数组/集合

vba - 如何确定线条绘制对象的端点?

php - MYSQL 中相关变量的可编辑公式

java - Java中的数学表达式(字符串)到数字

vba - 使用 VBA 在 Excel 中选择形状

vba - 将表单控制按钮固定到多个工作表