Frage
Ich habe Probleme mit einem VBA-Skript haben. Die Funktion füllt ein Blatt mit einigen Formeln. Es funktioniert gut, die meiste Zeit, aber wenn ich es auf einen größeren Datensatz laufen ... stürzt mit:
Laufzeitfehler '1004': AutoFill-Methode der Range-Klasse ist fehlgeschlagen
Der Debugger zeigt auf den letzten Aufruf AutoFill. Wenn ich auf dem Blatt sehen, so scheint es, dass der Anruf AutoFill etwa 3/4 der Art und Weise gearbeitet, aber stoppt.
With Sheets("OPENS")
' Fill OPENS formulas
.Range("B" & firstRowOPENS - 3) = "=DATE(YEAR($B$1), MONTH($B$1)+2, DAY($B$1))"
.Range("B" & firstRowOPENS - 3).NumberFormat = "[$-409]mmm-yy;@"
.Range("C" & firstRowOPENS - 3) = "=C1+2"
.Range("B" & firstRowOPENS - 1) = "=SUBTOTAL(109,B" & firstRowOPENS & ":B" & lastRowOPENS & ")"
.Range("B" & firstRowOPENS - 1).AutoFill .Range("B" & firstRowOPENS - 1 & ":" & lastColOPENS & firstRowOPENS - 1), xlFillValues
.Range("B" & firstRowOPENS) = "=SUM(C" & firstRowOPENS & ":" & lastColOPENS & firstRowOPENS & ")"
.Range("C" & firstRowOPENS).FormulaArray = "=SUM( ('Combined Input'!R2C2:R" & lastRowCI & "C2=RC1) * ('Combined Input'!R2C45:R" & lastRowCI & "C45=R2C) * ('Combined Input'!R2C43:R" & lastRowCI & "C43 = R1C4) * INDEX('Combined Input'!R2C5:R" & lastRowCI & "C40, 0,R" & firstRowOPENS - 3 & "C3,1)) * R[-" & (lastRowOPENS - firstRowOPENS + 5) * 2 & "]C" & OPENS_PROB_COL
.Range("C" & firstRowOPENS).AutoFill .Range("C" & firstRowOPENS & ":" & lastColOPENS & firstRowOPENS), xlFillValues
If lastRowOPENS > firstRowOPENS Then
.Range("B" & firstRowOPENS & ":" & lastColOPENS & firstRowOPENS).AutoFill .Range("B" & firstRowOPENS & ":" & lastColOPENS & lastRowOPENS), xlFillValues
End If
setBorders .Range("A" & firstRowOPENS - 2 & ":" & lastColOPENS & lastRowOPENS)
End With
Irgendwelche Vorschläge?
Edit:
fand ich das Problem: http://support.microsoft.com/kb/166342
"In Excel 2003 und in früheren Versionen von Excel, ein einzelnes Arbeitsblatt maximal 65.472 Matrixformeln enthalten, die auf ein anderes Arbeitsblatt verweisen. Wenn Sie mehr Formeln verwenden, teilen Sie die Daten in mehreren Arbeitsblättern, so dass es weniger sind als 65.472 Verweise auf ein Arbeitsblatt. „
Lösung
http://support.microsoft.com/kb/166342
"In Excel 2003 und in früheren Versionen von Excel, ein einzelnes Arbeitsblatt maximal 65.472 Matrixformeln enthalten, die auf ein anderes Arbeitsblatt verweisen. Wenn Sie mehr Formeln verwenden, teilen Sie die Daten in mehreren Arbeitsblättern, so dass es weniger sind als 65.472 Verweise auf ein Arbeitsblatt. „