在单元格中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进入公式并不容易