我在网上搜索解决方案,并多次对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被调用者来完成,但是这不仅仅是使用.Formula的工作。

因此,请使用.FormulaLocal或替换“;”带有“,”(推荐)。

10-07 21:40