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

我已经search了一个解决scheme,并重新编码了VBA多次。 我结束了手动填充string(位,因为我总是算错了):

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

这会导致一个string包含:= SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);“”;“”),可以在本地variables中find:PKHNTString:“= SUBSTITUTE(UPPER(AF:AF&AD:AD&AE :AE);“”;“”)“:string

如果我粘贴在单元格中的确切值,它的工作原理(删除空格,并将所有内容都转换为大写),但是当我把这个公式通过VBA像这样放入单元格:

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

我得到错误:运行时错误'1004'应用程序定义或对象定义的错误。

任何帮助,将不胜感激!

TIA,威廉

您在公式中指定了分号(;)作为参数分隔符。 通过VBA,无论当前的区域设置如何,您总是需要使用逗号。 .FormulaLocal不需要列表分隔符的本地化版本。

由于区域设置可以在PC之间变化,所以最好使用.Formula成员而不是.FormulaLocal – 否则你将不得不使用代码来确定正确的列表分隔符来使用(可以用一些API调用,但这是比只使用.Formula更多的工作)。

所以要么使用.FormulaLocal,要么replace“;” 用“,”(推荐)。

你必须在PKHNTString里面每一个“内部”(引号)。现在,VBA试图插入=SUBSTITUTE(UPPER(AF:AF&AD:AD&AE:AE);作为公式,不知道是什么;"") 。将公式插入单元格时,您的PKHNTString必须是:

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

通过VBA进入公式并不容易