2015-09-01 35 views
1

我以前使用我的程序內的本方法插入式這是很多較大但是我接收到「運行時錯誤代碼1004無法設置範圍類的FormulaArray屬性「與這一個:錯誤時插入式超過255個字符

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 

我不知道這次我錯了,我希望你能幫助。

在此先感謝

回答

0

msdn site直摘自:

如果您使用此屬性輸入數組公式,該公式必須使用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))" 

你有另一個_S_替換代碼這永遠不會改變它的已經過去_S_.Replace內。

修復:

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

謝謝你的評論,我也不過用不同的,更長的公式這樣做成功,早在A1引用樣式的程序。我曾在這個論壇上的其他地方讀,有可能是一個問題,如果縮寫當公式沒有遵循正確的語法。我不知道這是否是問題? – Mac

+0

@Mac我沒有理會,如果你沒有什麼工作檢查,是我不好。我跑你的代碼,它的工作,但後來我發現真正的錯誤會更新我的答案。 – DragonSamu

+0

撒姆感謝你的幫助,我不知道多久會採取我注意到! – Mac

相關問題