Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler

Laufzeitfehler
02.05.2013 14:43:59
Gregor
Hallo zusammen
Ich erstelle per VBA rund 750 neue Blätter und fülle diese mit Inhalt (For Start = 1 to 750). Dazu verwende ich ua. den Code
ReDim Preserve arrFind(1 To 3 + MaxWert, 1 To n)
Nach 620 Durchläufen (Blätter) erhalte ich die Meldung Laufzeitfehler 9, Index ausserhalb des Gültigkeitsbereichs.
Wenn ich dann den Code beende und den Loop erneut von 621 bis 750 starte, läuft der Loop ohne diesen Fehler. Ich habe das Makro nun in 1 bis 620 und 620 bis 750 unterteilt, das funktioniert ohne Fehlermeldung.
Woran kann das liegen, wie kann ich diesen Fehler beheben?
Danke und Gruss
Gregor

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ohne restliche Code, nicht zu beantworten! (owT)
02.05.2013 15:11:01
EtoPHG

AW: Gerne
02.05.2013 15:50:04
Gregor
Hallo
Ja gerne
For Start1 = 1 To 620
Dim arrFind()
Muster = Worksheets("Musterlängen").Cells(Start1, 1)
With Worksheets("Muster")
intlastRow = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
intlastColumn = .UsedRange.SpecialCells(xlCellTypeLastCell).Column
Spalte_Roma = .Application.Match("Länge Kompo", .Rows(2), False) + 1
Spalte_Muster = .Application.Match("Muster", .Rows(1), False)
intLastColumn1 = .Cells(2, Columns.Count).End(xlToLeft).Column
For Each c In .Range(.Cells(3, Spalte_Muster), .Cells(intlastRow, intlastColumn))
If c = Muster Then
Wert = c.Row
If WorksheetFunction.CountA(.Range(.Cells(c.Row, Spalte_Roma), .Cells(c.Row, intLastColumn1))) > MaxWert Then MaxWert = WorksheetFunction.CountA(.Range(.Cells(c.Row, Spalte_Roma), .Cells(c.Row, intLastColumn1)))
End If
Next
n = 0
Zähler1 = 0
For Start = Spalte_Muster To intlastColumn
For Each c In .Range(.Cells(3, Start), .Cells(intlastRow, Start))
If c = Muster Then
Zähler = 0
n = n + 1
ReDim Preserve arrFind(1 To 3 + MaxWert, 1 To n)
arrFind(1, n) = .Cells(c.Row, 2).Value
arrFind(2, n) = .Cells(c.Row, 3).Value & " - " & .Cells(c.Row, 4).Value & " - " & .Cells(c.Row, 5).Value
For Beginn = Spalte_Roma To Spalte_Muster - 2
If .Cells(c.Row, Beginn).Value = "x" Then
arrFind(3 + Zähler, n) = .Cells(1, Beginn).Value & " " & .Cells(2, Beginn).Value & " m"
Zähler = Zähler + 1
End If
Next
End If
Next
Next Start
End With
'---fügt Blatt ein
Worksheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = Muster
With Worksheets(Muster)
.Cells(3, 1).Value = "Muster"
.Cells(3, 2).Value = "Strecke"
.Cells(3, 3).Value = "Kompo 1"
.Cells(3, 4).Value = "Kompo 2"
.Cells(3, 5).Value = "Kompo 3"
.Cells(3, 6).Value = "Kompo 4"
.Cells(3, 7).Value = "Kompo 5"
.Range(.Cells(4, 1), .Cells(3 + n, 2 + MaxWert)) = Application.Transpose(arrFind)
End With
Next Start1
Gruss Gregor

Anzeige
In welcher Codezeile tritt Fehler auf? (owT)
02.05.2013 16:11:23
EtoPHG

AW: In welcher Codezeile tritt Fehler auf? (owT)
02.05.2013 16:21:13
Gregor
Hallo
Bei
ReDim Preserve arrFind(1 To 3 + MaxWert, 1 To n)
Laufzeitfehler 9
Gruss Gregor

das glaub ich nicht...
02.05.2013 16:24:25
Luschi
Hallo Gregor,
das Array kannst Du dimensionieren, solanage der Hauptspeicher nicht platzt.
Dein Fehler kommt beim zurückschreiben des Arrays in die Tabelle per 'Application.Transpose'!
Lösung: siehe mein vorheriges Schribs.
Gruß von Luschi
aus klein-Paris

Anzeige
...ich schliesse mich Luschi an
02.05.2013 16:33:25
EtoPHG
Gregor,
Wenn deine Codezeile gelb mit dem Fehler stoppt, was für Werte stehen dann in MaxWert und n ?
Theoretisch könnte das nur auftreten, wenn
MaxWert kleiner oder gleich -3 oder n kleiner 1 ist.
Gruess Hansueli

AW: ...ich schliesse mich Luschi an
02.05.2013 17:16:26
Gregor
Hallo
Also mein 'For Start1 = 2 To lRow' (Wert 752) stoppt immer bei Start1 Wert = 621 beim Code (gelb)
ReDim Preserve arrFind1(1 To 3 + MaxWert, 1 To nn)
mit dem Laufzeitfehler 9 Index ausserhalb des gültigen Bereichs
Max Wert = 8
nn = 1
Gruss Gregor

AW: Laufzeitfehler
02.05.2013 15:25:41
Matze
Hallo Gregor,
könnte das ganze bei dir Speicher abhängig sein? Ist nur ne Vermutung, aber du könntest die Datei hier einstellen , entferne dazu das was wir nicht sehen sollen!
Lasse ebenfalls offen,....
Matze
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige