2015-04-21 85 views
2

我創建了一個可在電子表格中工作但不在VBA中的公式。我在這裏粘貼的只是整個公式的一個子集;總共超過3000個字符運行時錯誤1004將公式放入單元格

如果我運行它,它的工作原理

LastRow = Range("a" & Rows.Count).End(xlUp).Row 
Range("cI2:cI" & LastRow).Formula = "=CONCATENATE(CONCATENATE(MID(""00"",1,2-LEN(A2)),A2))" 

如果我跑,我得到運行時錯誤

LastRow = Range("a" & Rows.Count).End(xlUp).Row 
Range("cI2:cI" & LastRow).Formula = "=CONCATENATE(CONCATENATE(MID(""00"",1,2-LEN(A2)),A2)), " & _ 
"CONCATENATE(MID(""00000000"",1,8-LEN(B2)),B2),"" "", CONCATENATE(C2,MID(""   "",1,12-LEN(C2))),CONCATENATE(MID(""00"",1,2-LEN(D2)),D2) " 
+0

這可能是由於錯誤地使用了''',這也是VBA中字符串的分隔符。如果你想寫這個:'「= IF(A1 =」test「,True,False)」'in VBA,把它寫成''= IF(A1 =「+ chr(34)+」test「+ chr(34)+」,True,False)「'所以你確保你不會遇到這種錯誤。 –

+0

是的,它做到了,謝謝。 –

回答

1

沒有看到該公式的其餘部分,我會懷疑它超出了Excel的一些內部限制。浮現在腦海中的可能性是:

參數的函數:255個

的功能嵌套層次:64

的公式內容長度:8,192個字符

你可以找到更多有關Office支持頁面here的信息。

這就是說,我很好奇你爲什麼需要建立一個3000字符公式放置在單元格中。這就是VBA的用途 - 將公式轉換爲用戶定義的函數很可能成爲解決方案。