插入大于255个字符的公式时出错

我以前在我的程序中使用这个方法来插入一个公式,这是一个很大的但是我收到“运行时错误代码1004无法设置范围类的FormulaArray属性”与这一个:

Sub TEST() Dim QFormula As String Dim QCountF As String Dim QCountF2 As String Dim WStart As String Dim MoreDash As String Dim ValueF As String QFormula = "=IF($K3=4,IF(_Q_>0,1,_M_),IF($K3=2,IF(_Q_>0,1,IF(COLUMN(P3)-MATCH(_S_,$A$1:P$1,0)>=8,IF(_Q2_>0,1,_M_),_M_)),IF(_Q_>0,1,IFERROR(IF((COLUMN(P3)-MATCH(_S_,$A$1:P$1,0)+1)-_V_<=13,1,_M_),_M_))))" QCountF = "COUNTA(OFFSET(INDIRECT(ADDRESS(ROW(P3),COLUMN(P3)-4)),0,1,1,3))" QCountF2 = "COUNTA(OFFSET(INDIRECT(ADDRESS(ROW(P3),COLUMN(P3)-8)),0,1,1,3))" WStart = """START""" MoreDash = """-""" ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(_S_,$A$1:P$1,0))):O3,0))" With ActiveCell .FormulaArray = QFormula .Replace "_Q_", QCountF .Replace "_Q2_", QCountF2 .Replace "_S_", WStart .Replace "_M_", MoreDash .Replace "_V_", ValueF End With End Sub 

我不知道这次我错了什么地方,希望你能帮上忙。

提前致谢

直接从msdn网站 :

如果使用此属性input数组公式,则公式必须使用R1C1引用样式,而不是A1引用样式(请参阅示例)。

 Worksheets("Sheet1").Range("E1:E3").FormulaArray = "=Sum(R1C1:R3C3)" 

更新编辑:

正如你在评论中所述,即使msdn说你必须使用R1C1引用A1参考也可以。

你的代码中的实际问题是:

 ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(_S_,$A$1:P$1,0))):O3,0))" 

在replace代码中有另一个_S_ ,它永远不会被改变,因为它已经过了_S_ .Replace

固定:

 ValueF = "VALUE(MATCH(1,INDIRECT(ADDRESS(ROW(P3),MATCH(""START"",$A$1:P$1,0))):O3,0))"