Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1292to1296
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

Excel Datei stürtzt ab

Excel Datei stürtzt ab
14.01.2013 16:01:52
Andre
Hallo,
da ich mein Problem nicht im großen weiten web finden kann, hoffe ich das ihr mir weiterhelfen könnt.
Ich habe ein VBA-Projekt programmiert (excel 2003). Dieses funktioniert reibungslos in 2003 und 2007. Bei 2010 stürzt das Makro ab. Der Absturtz tritt komischerweise nur auf, wenn das Programm alleine abläuft. Im Debug-Modus beim Schritt-Für-Schritt Abarbeiten mittels F8 stürzt das Programm nicht ab.
Ich habe schon den Ansatz mit DoEvents im Auge, weiß jedoch nicht wo genau in den 4000 Zeilen das Programm unter Excel 2010 das braucht. Habe es einfach mal sporadisch eingebaut. Das Programm stürtzt trotzdem weiterhin ab.
Ich hoffe ich habe mein Problem verständlich beschrieben.
Über Ideen und Hilfen würde ich mich freuen.
Mit freundlichen Grüßen
Andre

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

Betreff
Datum
Anwender
Anzeige
AW: Excel Datei stürtzt ab
14.01.2013 21:17:32
Franc
stürzt ab = Excel komplett beendet?
wenn nicht, hast du eine "on error .." Anweisung? Wenn ja, kommentiert die aus und dann sollte es an der Stelle hängenbleiben wo der Fehler auftritt.

AW: Excel Datei stürtzt ab
14.01.2013 21:59:15
Olaf
Hi Andre,
hängt sich das Project auch auf anderen Rechnern weg? Kannst Du das testen?
Kommt der Hänger immer an der selben Stelle?
Wie ists mit kleinen Meldern (msgboxen) die Dir anzeigen wo sich das Tool befindet und ggf. Variablen anzeigt? So mach ich das manchmal, wenn ich nicht genau weiß, wo ein Fehler auftritt.
Wenn der Code von Messageboxen unterbrochen wird, hängt er sich dann trotzdem weg oder läuft er dann durch?
Gruß...
...Olaf

Anzeige
AW: Excel Datei stürtzt ab
15.01.2013 08:46:41
Klaus
Hi Andre,
Der Absturtz tritt komischerweise nur auf, wenn das Programm alleine abläuft. Im Debug-Modus beim Schritt-Für-Schritt Abarbeiten mittels F8 stürzt das Programm nicht ab.
IMMER wenn mir das passiert, habe ich irgendwo eine Referenzierung falsch gesetz (geht ja schnell, ein Punkt vor dem .Range vergessen oder so). Im Einzelschrittmodus geht es dann, weil ich mir die Tabelle in der etwas passiert ansehe, sie somit active ist und der vergessene Punkt nicht stört.
Grüße,
Klaus M.vdT.

AW: Excel Datei stürtzt ab
15.01.2013 09:13:14
Andre
Hallo,
ich danke euch für die schnellen Antworten.
Zu den Ideen. Excel stürzt komplett ab. Fehlermeldungen gibt es nicht. Das einemal habe ich noch kurz eine Fehlermeldung mit einer Range-Übergabe gesehen, was der Idee von Klaus nahe kommt. Ich probiere jetzt einfach mal eine Mix aus euren Hilfen. Ich bau mal ein paar MasBoxen ein. Zusätzlich setze ich ein paar Haltepunkte. Ich hoffe das ich so der Quelle des Problems näher komme.
Schwierig ist ja lediglich die Quelle zu detektieren wenn Excel immer gleich sofort abstürzt.
Ich danke euch erstmal für die Hinweise und gebe Rückmeldung wenn ich dem Fehler auf die Spur gekommen bin.
Gruß Andre

Anzeige
AW: Excel Datei stürtzt ab
15.01.2013 10:21:05
Andre
So,
ein kleines Update. Ich denke Klaus hatte den richtigen Riecher. Hier mal der Codeschnipsel bei dem Excel 2010 austeigt und abstürtzt.
Public Function StrukturAnlegenInit()
Dim RangeInit As Range
Dim LetzteBeschriebeneZeileInit As Integer
With Workbooks(DokumentName).Worksheets(SheetAus)
'Ende der Range = Letzte beschriebene Zeile des Worksheets Auswertung in Spalte 6
LetzteBeschriebeneZeileInit = .Cells(Rows.Count, 6).End(xlUp).Row
If LetzteBeschriebeneZeileInit = 20 Then
'Die Range setzen
Set RangeInit = .Range("A1", "M" & LetzteBeschriebeneZeileInit)
End If
MsgBox "Test 2"
'Bild erstellen, abspeichern und einfügen
Call BildAusTabelle(SheetAus, RangeInit, "jpg")
End With
MsgBox "Test 3"
End Function

Public Function BildAusTabelle(ByVal WorksheetBAT As String, _
ByVal RangeBAT As Range, _
ByVal BildformatBAT As String)
' Beschreibung:     - Erstellt aus einem Übergebenen Tabellenblatt ein Bild
'                   - Speichert dieses anschließend ab und fügt es in die Userform ein
'                   - Das Bildformat ist wählbar (jpg,gif)
' Übergabewerte:    - WorksheetBAT: Gibt das Worksheet an welches zu einem Bild verarbeitet
'                                   werden soll
'                   - RangeBAT: Gibt die Range das Worksheets an die Beschrieben ist
'                   - BildformatBAT: Gibt das gewünschte Bildformat an
' Rückgabeweerte:   keine
'Deklarationen
Dim LetzteBeschriebeneZeileBAT As Integer
Dim BildBAT As Picture
Dim DiagrammBAT As ChartObject
'Fehlerabbruch wenn Übergabeparameter fehlen
If WorksheetBAT = "" Then Exit Function
If BildformatBAT = "" Then Exit Function
MsgBox "Test 11"
With Workbooks(DokumentName).Worksheets(WorksheetBAT)
'Ende der Range = Letzte beschriebene Zeile des Worksheets Auswertung in Spalte 6
LetzteBeschriebeneZeileBAT = .Cells(Rows.Count, 6).End(xlUp).Row
MsgBox "Test 111"
'Das Worksheet Auswertung aktivieren und den beschriebenen Bereich kopieren
.Activate
RangeBAT.Copy
MsgBox "Test 112"
'Ein Worksheet anlegen um das Bild zu generieren
Worksheets.Add
MsgBox "Test 113"
'Bild als Chart anlegen und in das Worksheet kopieren
Set BildBAT = ActiveSheet.Pictures.Paste(Link:=True)
MsgBox "Test 114"
BildBAT.CopyPicture Appearance:=xlScreen, Format:=xlPicture
MsgBox "Test 115"
Set DiagrammBAT = ActiveSheet.ChartObjects.Add(0, 0, BildBAT.Width, BildBAT.Height)
End With
End Function
Zwischen den beiden MsgBoxen "Test 111" und "Test 112" steigt er aus. Ich denke mal das es an der Range liegt die ich da übergeben habe. Der Absturz tritt allerdings erst beim zweiten Start des Programms aus der Entwicklungsumgebung herraus auf. Beim ersten Programmstart der beim Öffnen der Datei ausgeführt wird stürzt Excel nicht ab und durchläuft alle Programmteile (Er zeigt mir alle nötigen MsgBoxen an ;-)).
Meine Idee ist jetzt einfach statt einer Range, Anfang- und Endzeile sowie Anfang- und Endspalte zu übergeben. Sind zwar mehr Zeilen, er steigt aber nicht mehr aus. Einen Fehler in der Syntax kann ich derzeit nicht erkennen. Muss allerdings eingestehen, dass ich aus der C-Programmierung komme und mit Range-Übergaben in den 4 großen VBA-Projekten noch nicht sonderlich in Berührung gekommen bin.
Wenn ihr eine Idee habt wie ich die Range-Übergabe behalten kann, wäre ich euch sehr verbunden. Schließlich wird mir das bestimmt noch häufiger über den Weg laufen. Da ist es immer gut ein Beispiel in der Codesammlung zu haben, welches sauber funktioniert ;-)
Gruß Andre

Anzeige
Excel Datei stürtzt ab
15.01.2013 13:19:45
Andre
Hallo,
irgendwie komme ich nicht so recht weiter mit den Abstürzen unter Excel 2010. Für mich ebenfalls nicht verständlich ist, dass Excel 2010 mit meinem in Excel 2003 geschriebenen Programm auch in der Entwicklungsumgebung Probleme hat. STRG + C, STRG + V und STRG + X führen ebenfalls zum Absturz des Excel.
Eine andere Datei mit Makros (ebenfalls *.xls, also in 2003 programmiert) funktioniert hinsichtlich der STRG Sortkeys reibungslos.
Weitere Abstürze von Excel 2010:
Weiterhin stürzt das Programm beim Ausführen von Workbooks(DokumentName).Worksheets(WorksheetBAT).Range(RangeBAT.Address).Copy (Habe diese Zeile mal verändert) ab.
bei Workbooks(DokumentName).Save stürzt Excel 2010 ab.
Workbooks(DokumentName).SaveAs Filename:=Workbooks(DokumentName).FullName funktioniert allerdings. Dies habe ich also gelöst.
bei Workbooks(DokumentName).Close stürzt Excel 2010 ab.
Noch nicht gelöst.
Somit muss mein Programm schon schwerwiegende Probleme verursachen. Vielleicht fehlt mir in irgendeiner hinsicht eine Bibliothek.
Über Hilfen würde ich mich ser freuen.
Gruß Andre

Anzeige
Excel Datei stürtzt ab
15.01.2013 14:21:39
Andre
Hallo,
hab gerade festgestellt das meine Frage nicht mehr als Offen angezeigt wird. Habe jetzt mal für diese Nachricht das Kontrollkästchen aktiviert. Ich hoffe damit ist das ganze dann wieder offen :-).
Gruß Andre

AW: Excel Datei stürtzt ab
18.01.2013 14:19:09
guentherh
Hallo Andre,
mir kommt das ByVal beim Range komisch vor.
leider nutze ich das in meinen Codes nicht, so dass ich Dir nicht sagen kann, ob es wirklich kritisch ist.
Gruß,
Günther

AW: Excel Datei stürtzt ab
19.01.2013 11:03:08
fcs
Hallo Andre,
die Deklaration der Range-Objekte ist schon etwas ungewöhnlich.
Wenn man zwischen den Welten (Excel 2003 und 2007/2010) wechselt, dann muss man beim Einsatz von "Rows.Count" aufpassen wegen der größeren Zeilenzahl in 2007/2010). Besser ist es hier durch einen vorangestzten Punkt vollständig zu referenzieren.
Variablen, die für Zeilennummer in Tabellen werwendet werden sollten generell als Long deklariert werden, da es zu einem Wert-Überlauffehler kommen kann, wenn die Grenze für Integer (32767) überschritten wird.
Die Variable "DokumentName" wird in der Prozedur "BildAusTabelle" verwendet.
Ihr Wert wird scheinbar an anderer Stelle zugewiesen. Diese Variable muss natürlich den Namen einer geöffneten Datei haben, sonst gibt eine Störung im Ablauf. Sie muss außerdem übergeordnet als Private oder Public deklariert. Hier besteht dann grundsätzlich die Gefahr, dass die Variable ihren Wert verliert, wenn nach Fehlermeldungen die weitere Makroausführung abgebrochen wird. Es es deshalb ratsam, an passenden Stellen des Codes Prüfungen einzubauen auf den Wert der Variablen.
Gruß
Franz
Public Function StrukturAnlegenInit()
Dim RangeInit As Range
Dim LetzteBeschriebeneZeileInit As Long
With Workbooks(DokumentName).Worksheets(SheetAus)
'Ende der Range = Letzte beschriebene Zeile des Worksheets Auswertung in Spalte 6
'hier vor Rows.Count einen "." investieren, da sonst probleme bei Wechseln zwischen 2003 _
und 2007/2010 möglich
LetzteBeschriebeneZeileInit = .Cells(.Rows.Count, 6).End(xlUp).Row
If LetzteBeschriebeneZeileInit = 20 Then
'Die Range setzen
'           Set RangeInit = .Range("A1", "M" & LetzteBeschriebeneZeileInit)
Set RangeInit = .Range("A1:M" & LetzteBeschriebeneZeileInit)
'oder von mir bevorzugt
Set RangeInit = .Range(.Cells(1, 1), .Cells(LetzteBeschriebeneZeileInit, 13))
End If
MsgBox "Test 2"
'Bild erstellen, abspeichern und einfügen
Call BildAusTabelle(SheetAus, RangeInit, "jpg")
End With
MsgBox "Test 3"
End Function
Public Function BildAusTabelle(ByVal WorksheetBAT As String, _
ByVal RangeBAT As Range, _
ByVal BildformatBAT As String)
' Beschreibung:     - Erstellt aus einem Übergebenen Tabellenblatt ein Bild
'                   - Speichert dieses anschließend ab und fügt es in die Userform ein
'                   - Das Bildformat ist wählbar (jpg,gif)
' Übergabewerte:    - WorksheetBAT: Gibt das Worksheet an welches zu einem Bild verarbeitet
'                                   werden soll
'                   - RangeBAT: Gibt die Range das Worksheets an die Beschrieben ist
'                   - BildformatBAT: Gibt das gewünschte Bildformat an
' Rückgabeweerte:   keine
'Deklarationen
Dim LetzteBeschriebeneZeileBAT As Long
Dim BildBAT As Picture
Dim DiagrammBAT As ChartObject
'Fehlerabbruch wenn Übergabeparameter fehlen
If WorksheetBAT = "" Then Exit Function
If BildformatBAT = "" Then Exit Function
MsgBox "Test 11"
With Workbooks(DokumentName).Worksheets(WorksheetBAT)
'Ende der Range = Letzte beschriebene Zeile des Worksheets Auswertung in Spalte 6
'hier vor Rows.Count einen "." investieren, da sonst Probleme bei Wechseln zwischen 2003 _
und 2007/2010 möglich
LetzteBeschriebeneZeileBAT = .Cells(.Rows.Count, 6).End(xlUp).Row
MsgBox "Test 111"
'Das Worksheet Auswertung aktivieren und den beschriebenen Bereich kopieren
'Das direkte aktivieren eine Blattes in einer nicht aktiven Arbeitsmappe schein zwar _
zu funktionieren. Ich bevorzuge aber (wenn es denn unbedingt sein muss) zuerst die _
Mappe zu aktivieren und dann das Blatt.
.Parent.Activate
.Activate
RangeBAT.Copy
MsgBox "Test 112"
'Ein Worksheet anlegen um das Bild zu generieren
Worksheets.Add
MsgBox "Test 113"
'Bild als Chart anlegen und in das Worksheet kopieren
Set BildBAT = ActiveSheet.Pictures.Paste(Link:=True)
MsgBox "Test 114"
BildBAT.CopyPicture Appearance:=xlScreen, Format:=xlPicture
MsgBox "Test 115"
Set DiagrammBAT = ActiveSheet.ChartObjects.Add(0, 0, BildBAT.Width, BildBAT.Height)
End With
End Function

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige