Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
272to276
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
272to276
272to276
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Blätter kopieren --> Absturz

Blätter kopieren --> Absturz
25.06.2003 15:49:35
Matthias Gäbisch
Hallo,

ich habe eine Routine die mir ein Vorlageblatt je nach Bedarf bis zu 8 mal kopiert. Zuerst werden immer alle Blätter außer der Vorlage gelöscht.
Jetzt stürzt mir Excel immer ab, wenn ich die Routine 6 mal aufrufe:"Die Copy-Methode ist fehlerhaft"
Muß ich da irgendwie den Speicher leeren und wenn ja, wie geht das.

Danke

Matze

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Blätter kopieren --> Absturz
25.06.2003 15:56:46
ChrisL

Hi Matze

Wie schaut dein Code aus?

Gruss
Chris

Re: Blätter kopieren --> Absturz
25.06.2003 16:02:32
Matthias Gäbisch

Hier mal das gesamte Modul.

Sub UpdateYears()
Dim EndJahrBlatt1 As String
Dim AnfangJahrBlatt1 As String
Dim JahrBlatt1 As String
Dim BlattJahrBlatt1 As String
Dim EndJahrBlatt2 As String
Dim AnfangJahrBlatt2 As String
Dim JahrBlatt2 As String
Dim BlattJahrBlatt2 As String
Dim EndJahrBlatt3 As String
Dim AnfangJahrBlatt3 As String
Dim JahrBlatt3 As String
Dim BlattJahrBlatt3 As String
Dim Blatt1Vorlage As String
Dim Blatt2Vorlage As String
Dim Blatt3Vorlage As String
Dim AnfangVorgabe As String
Dim Ankerblatt As String
Dim LoeschArray() As Variant
Dim LoeschBlaetter As Variant
Dim i As Byte
Dim j As Byte

On Error GoTo eh

Application.ScreenUpdating = False
Ankerblatt = ActiveSheet.Name
ShiftCalculation_Manual
blnBerechnung = False
AnfangJahrBlatt1 = Sheets(strSheetInput).Range(strBlatt1YearStartRange).Value
EndJahrBlatt1 = Sheets(strSheetInput).Range(strBlatt1YearEndRange).Value
AnfangJahrBlatt2 = Sheets(strSheetInput).Range(strBlatt2YearStartRange).Value
EndJahrBlatt2 = Sheets(strSheetInput).Range(strBlatt2YearEndRange).Value
AnfangJahrBlatt3 = Sheets(strSheetBonds).Range(strBlatt3YearStartRange).Value
EndJahrBlatt3 = Sheets(strSheetBonds).Range(strBlatt3YearEndRange).Value

AnfangVorgabe = Left(Sheets(strSheetBlatt1Conditions).Range(strFirstYearOverall).Value, 4)

AnfangJahrBlatt1 = AnfangVorgabe + Fix(AnfangJahrBlatt1 / 24)
EndJahrBlatt1 = AnfangVorgabe + Fix(EndJahrBlatt1 / 24) + 1
AnfangJahrBlatt2 = AnfangVorgabe + Fix(AnfangJahrBlatt2 / 24)
EndJahrBlatt2 = AnfangVorgabe + Fix(EndJahrBlatt2 / 24) + 1
AnfangJahrBlatt3 = AnfangVorgabe + Fix(AnfangJahrBlatt3 / 24)
EndJahrBlatt3 = AnfangVorgabe + Fix(EndJahrBlatt3 / 24) + Sheets(strSheetBonds).Range(strBondsControl).Value

Call dblBlaetterEinlesen
'jetzt alles bis auf die Vorlagen löschen
j = 0
For i = 1 To UBound(strBlaetterBlatt1)
ReDim Preserve LoeschArray(j)
LoeschArray(j) = strBlaetterBlatt1(i)
j = j + 1
Next

For i = 1 To UBound(strBlaetterBlatt2)
ReDim Preserve LoeschArray(j)
LoeschArray(j) = strBlaetterBlatt2(i)
j = j + 1
Next

For i = 1 To UBound(strBlaetterBlatt3)
ReDim Preserve LoeschArray(j)
LoeschArray(j) = strBlaetterBlatt3(i)
j = j + 1
Next
'Gibts was zum Löschen? Dann Löschen
If j > 0 Then
Set LoeschBlaetter = Sheets(LoeschArray)
Application.DisplayAlerts = False
LoeschBlaetter.Delete
Application.DisplayAlerts = True
End If
Blatt1Vorlage = strBlaetterBlatt1(0)
Blatt2Vorlage = strBlaetterBlatt2(0)
Blatt3Vorlage = strBlaetterBlatt3(0)

'die ersten Jahre eintragen

JahrBlatt1 = "'" & AnfangJahrBlatt1 & "/" & (AnfangJahrBlatt1 + 1)
BlattJahrBlatt1 = strBlatt1_Name & AnfangJahrBlatt1 & "_" & (AnfangJahrBlatt1 + 1)
Sheets(Blatt1Vorlage).Range(strBlatt1_YearRange).Value = JahrBlatt1
Sheets(Blatt1Vorlage).Name = BlattJahrBlatt1
AnfangJahrBlatt1 = AnfangJahrBlatt1 + 1


JahrBlatt2 = "'" & AnfangJahrBlatt2 & "/" & (AnfangJahrBlatt2 + 1)
BlattJahrBlatt2 = strBlatt2_Name & AnfangJahrBlatt2 & "_" & (AnfangJahrBlatt2 + 1)
Sheets(Blatt2Vorlage).Range(strBlatt2_YearRange).Value = JahrBlatt2
Sheets(Blatt2Vorlage).Name = BlattJahrBlatt2
AnfangJahrBlatt2 = AnfangJahrBlatt2 + 1


JahrBlatt3 = "'" & AnfangJahrBlatt3 & "/" & (AnfangJahrBlatt3 + 1)
BlattJahrBlatt3 = strBlatt3_Name & AnfangJahrBlatt3 & "_" & (AnfangJahrBlatt3 + 1)
Sheets(Blatt3Vorlage).Range(strBlatt3_YearRange).Value = JahrBlatt3
Sheets(Blatt3Vorlage).Name = BlattJahrBlatt3
AnfangJahrBlatt3 = AnfangJahrBlatt3 + 1

Call dblBlaetterEinlesen
Blatt1Vorlage = strBlaetterBlatt1(0)
Blatt2Vorlage = strBlaetterBlatt2(0)
Blatt3Vorlage = strBlaetterBlatt3(0)

Blatt1merker = Blatt1Vorlage
Blatt2Merker = Blatt2Vorlage
Blatt3Merker = Blatt3Vorlage

Do Until AnfangJahrBlatt1 >= EndJahrBlatt1
JahrBlatt1 = "'" & AnfangJahrBlatt1 & "/" & (AnfangJahrBlatt1 + 1)
BlattJahrBlatt1 = strBlatt1_Name & AnfangJahrBlatt1 & "_" & (AnfangJahrBlatt1 + 1)
AnfangJahrBlatt1 = AnfangJahrBlatt1 + 1
ActiveWorkbook.Worksheets(Blatt1Vorlage).Copy after:=ActiveWorkbook.Worksheets(Blatt1merker)
ActiveWorkbook.Worksheets(Blatt1Vorlage & " (2)").Range(strBlatt1_YearRange).Value = JahrBlatt1
ActiveWorkbook.Worksheets(Blatt1Vorlage & " (2)").Range(strCodeTextPos).Value = strCodeText
ActiveWorkbook.Worksheets(Blatt1Vorlage & " (2)").Name = BlattJahrBlatt1
Blatt1merker = BlattJahrBlatt1
Loop

Do Until AnfangJahrBlatt2 >= EndJahrBlatt2
JahrBlatt2 = "'" & AnfangJahrBlatt2 & "/" & (AnfangJahrBlatt2 + 1)
BlattJahrBlatt2 = strBlatt2_Name & AnfangJahrBlatt2 & "_" & (AnfangJahrBlatt2 + 1)
AnfangJahrBlatt2 = AnfangJahrBlatt2 + 1
ActiveWorkbook.Worksheets(Blatt2Vorlage).Copy after:=ActiveWorkbook.Worksheets(Blatt2Merker)
ActiveWorkbook.Worksheets(Blatt2Vorlage & " (2)").Range(strBlatt2_YearRange).Value = JahrBlatt2
ActiveWorkbook.Worksheets(Blatt2Vorlage & " (2)").Range(strCodeTextPos).Value = strCodeText
ActiveWorkbook.Worksheets(Blatt2Vorlage & " (2)").Name = BlattJahrBlatt2
Blatt2Merker = BlattJahrBlatt2
Loop

Do Until AnfangJahrBlatt3 >= EndJahrBlatt3
JahrBlatt3 = "'" & AnfangJahrBlatt3 & "/" & (AnfangJahrBlatt3 + 1)
BlattJahrBlatt3 = strBlatt3_Name & AnfangJahrBlatt3 & "_" & (AnfangJahrBlatt3 + 1)
AnfangJahrBlatt3 = AnfangJahrBlatt3 + 1
ActiveWorkbook.Worksheets(Blatt3Vorlage).Copy after:=ActiveWorkbook.Worksheets(Blatt3Merker)
ActiveWorkbook.Worksheets(Blatt3Vorlage & " (2)").Range(strBlatt3_YearRange).Value = JahrBlatt3
ActiveWorkbook.Worksheets(Blatt3Vorlage & " (2)").Range(strCodeTextPos).Value = strCodeText
ActiveWorkbook.Worksheets(Blatt3Vorlage & " (2)").Name = BlattJahrBlatt3
Blatt3Merker = BlattJahrBlatt3
Loop

'die benutzerdefinierten Formate gehen irgendwie verloren...
' jetzt wieder herstellen

Call dblBlaetterEinlesen
Sheets(strBlaetterBlatt1(0)).Cells.Copy
For i = 1 To UBound(strBlaetterBlatt1)
Sheets(strBlaetterBlatt1(i)).Range("A1").PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Next i
Application.CutCopyMode = False

Sheets(strBlaetterBlatt2(0)).Cells.Copy
For i = 1 To UBound(strBlaetterBlatt2)
Sheets(strBlaetterBlatt2(i)).Range("A1").PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Next i
Application.CutCopyMode = False

Sheets(strBlaetterBlatt3(0)).Cells.Copy
For i = 1 To UBound(strBlaetterBlatt3)
Sheets(strBlaetterBlatt3(i)).Range("A1").PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Next i
Application.CutCopyMode = False

'und jetzt werden noch die Ecken ausgewählt, damits beim Durchblättern schöner ausschaut
For i = 0 To UBound(strBlaetterBlatt1)
Sheets(strBlaetterBlatt1(i)).Select
Range("A9").Select
Range("A9").Activate
Next i

For i = 0 To UBound(strBlaetterBlatt2)
Sheets(strBlaetterBlatt2(i)).Select
Range("A9").Select
Range("A9").Activate
Next i

For i = 0 To UBound(strBlaetterBlatt3)
Sheets(strBlaetterBlatt3(i)).Select
Range("A9").Select
Range("A9").Activate
Next i

blnBerechnung = True
Worksheets(Ankerblatt).Select
ShiftCalculation_Automatic
Application.ScreenUpdating = True
Exit Sub
eh:
MsgBox Error & " Update&"
End Sub

Anzeige
Re: Blätter kopieren --> Absturz
25.06.2003 16:21:33
ChrisL

Hi Matze

Sorry, aber da bin ich noch in 10 Jahren dran, wenn ich versuche das Makro zu interpretieren. Aber ich glaube nicht, dass man um 8 Blätter zu kopieren den Speicher leeren muss. Habe jedenfalls selber schon ein Makro geschrieben, welches in einer For..Next Schlauf ein Vorlageblatt 100 mal kopiert hat und das hat funktioniert.

Wenn ich deine Problembeschreibung richtig interpretiere, müsste das Problem in nachfolgendem Bereich liegen...

Vielleicht wäre es eine Idee mal einen Stop zu setzen und den Teil im Einzelschrittmodus ablaufen zu lassen. Vielleicht hilft dies den Bug weiter einzuschränken.

Gruss
Chris

Anzeige
Re: Blätter kopieren --> Absturz
25.06.2003 16:30:15
Matthias Gäbisch

Korrekt - in diesem Bereich hängts. Einzelschritt geht nicht: 'Jetzt kann nicht in den Haltemodus gewechselt werden'

Der Absturz kommt auch erst, wenn ich das Makro 7 mal gestartet habe.

noch offen
25.06.2003 16:37:59
ChrisL

Hi Matze

Da bin ich echt überfragt. Aber neben bei, wieso geht denn der Haltemodus nicht... versteh ich nicht.

Gruss
Chris

Re: Blätter kopieren --> Absturz
25.06.2003 17:03:56
Andreas Walter

Hatte was ähnliches vor langer Zeit
Kuck mal www.vbusers.com an und schau mal Rebuilder an.
Wenn das nicht klappt gibt es auch glaube ich hier irgendwo eine "Neu-Aufbau" Tool
Ansonsten - baue eine neue Exceldatei auf und probiere es dort - klingt, als ob die jetztige Datei ein Problem irgendwo hat.

Anzeige
Re: Blätter kopieren --> Absturz
26.06.2003 08:57:26
Matthias Gäbisch

Danke für die Mühe, hat aber auch nichts gebracht

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige