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

Laufzeitfehler 9 - Überlauf -??? Code anbei

Laufzeitfehler 9 - Überlauf -? Code anbei
03.05.2005 18:38:53
Peter
Hallo an die Spezialisten,
mit nachstehendem Code will ich diverse Tabellen in eine andere Mappe auslagern und in der bestehenden Mappe dann löschen.
Bisher hatte das kein Problem verursacht, nunmehr bekomme ich in der Zeile:..myWorksheet.UsedRange = myWorksheet.UsedRange.Value plötzlich folgende Meldung: Laufzeitfehler 9 Überlauf
Public

Sub Auslagern()
Application.ScreenUpdating = False
Dim i As Byte
For i = 3 To 9 Step 1
Sheets("200" & i).Visible = True
Sheets("Bm200" & i).Visible = True
Sheets("Bq200" & i).Visible = True
Sheets("Bj200" & i).Visible = True
Next i
Dim myWorksheet As Worksheet
Sheets(Array("2003", "2004", "2005", "2006", "2007", "2008", "2009", "Bm2003", "Bm2004", "Bm2005", "Bm2006", "Bm2007", "Bm2008", "Bm2009", "Bq2003", "Bq2004", "Bq2005", "Bq2006", "Bq2007", "Bq2008", "Bq2009", "Bj2003", "Bj2004", "Bj2005", "Bj2006", "Bj2007", "Bj2008", "Bj2009")).Copy
For Each myWorksheet In ActiveWorkbook.Worksheets
myWorksheet.UsedRange = myWorksheet.UsedRange.Value
Next
ActiveWorkbook.SaveAs "C:\" & frmVerwaltung.TextBox2.Value
Application.DisplayAlerts = False
ActiveWorkbook.Close
Workbooks("Timecheck.xls").Activate
Application.DisplayAlerts = False
Sheets(Array("2003", "2004", "2005", "2006", "2007", "2008", "2009", "Bm2003", "Bm2004", "Bm2005", "Bm2006", "Bm2007", "Bm2008", "Bm2009", "Bq2003", "Bq2004", "Bq2005", "Bq2006", "Bq2007", "Bq2008", "Bq2009", "Bj2003", "Bj2004", "Bj2005", "Bj2006", "Bj2007", "Bj2008", "Bj2009")).Delete
ThisWorkbook.Saved = True
Application.ScreenUpdating = True
End Sub

Die auszulagernden Daten haben ein Volumen von 3,04 MB. Weiss da jemand Rat?
Vielen Dank
Peter S.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 9 - Überlauf -? Code anbei
03.05.2005 19:57:36
Heiko
Hallo Peter,
bist du sicher das es bisher gelaufen hat, denn dieser Codeteil erscheint mir ziemlich fragwürdig.
For Each myWorksheet In ActiveWorkbook.Worksheets
myWorksheet.UsedRange = myWorksheet.UsedRange.Value
Next
Was soll den myWorksheet.UsedRange.Value ausdrücken, was bezweckst du damit ?
Gruß Heiko PS: Rückmeldung wäre nett
Hallo Heiko
03.05.2005 20:12:08
Peter
Hi Heiko,
zunächst mal darf ich sagen, daß eine Rückmeldung für mich obligatorisch ist, denn das gebietet der Dank an den/die Helfer und entspricht auch der Etikette des Forums, denn von der Antwort können alle über die Recherche dann eventuell profitieren.
Dies soll keine Mahnung an Dich darstellen, sondern ist eher als allgemeiner Hinweis gedacht; schau mal in Beiträgen von mir nach, ich gebe auch Hinweise wenn ich ohne Hilfe auf Lösungen kam, um sie zu veröffentlichen.
Jetzt zur spezifischen Frage: leider bin ich in diesem Code nicht firm, da ich ihn von einem Helfer vor längerer Zeit bekam; ich kann nicht mehr sagen in welchem Zusammenhang.
Aber eines kann ich bejahen, er lief bisher fehlerfrei.
Hast Du eventuell einen anderen Vorschlag der diesen Teil oder den gesamten Code ersetzen könnte und "unempfindlicher" ist?
Vielen Dank für Deine Antwort und Hilfe
Peter S.
Anzeige
Hallo Heiko...nochmals...
03.05.2005 20:27:10
Peter
Hallo Heiko,
ich habe den bewussten Teil mal probehalber aus dem Code entfernt; jetzt läuft es ohne Probleme.
Zumindest ist es gelöst; die wissenschaftliche Frage nach dem Sinn dieses Code-Teiles kann ich leider nicht nachvollziehen.
Vielleicht kommt ja jemand anders dahinter
Vielen Dank
Peter S.
AW: Hallo Heiko...nochmals...
03.05.2005 21:59:42
Luc:-?
Hallo Peter,
ich glaube, dass dieser Code-Teil erreichen sollte, dass Zahlenwerte, die aus was-weiß-ich-für-Gründen von XL als Text betrachtet wdn, wieder als Zahlen erkannt wdn. Ich greife in solchen Fällen zu ähnlichen Methoden. UsedRange wird wahrscheinlich schneller ablaufen als meine Methode - das Problem wird nur sein, dass der inzwischen zu groß geworden ist und deshalb den Fehler verursacht.
Gruß Luc :-?
Anzeige
Range = Range.Value
03.05.2005 22:02:08
Christoph
Hallo Peter
die betreffende Zeile (Range = Range.Value) ersetzt im genannten Range enthaltene Funktionen durch deren Wert. Dies entspricht dem folgenden:
Range("A1").Copy
Range("A1").PasteSpecial xlValues
(oder auf Excel-deutsch: kopieren - Bearbeiten - Inhalte einfügen -&gt Werte)
Prinzipiell ist "Range = Range.Value" schneller als Copy&Paste.
Das Problem sehe ich bei "UsedRange". Der "genutzte Bereich" wird nämlich nicht aktualisiert wenn du zB in Zeile 65000 einen Rahmen einfügst und dieses Format anschließend wieder löschst.
Ergo läuft dein Makro für jede Tabelle bis zu letzten irgendwann mal formatierten Zelle.
Btw. wird auch die Datei bei jeder dieser Aktionen größer. Abhilfe schafft, die nicht genutzten Zeilen und Spalten zu löschen (Bearbeiten - Zellen löschen...)
mach das mal bei deinen x Tabellenblätter und schau dir anschließend die Dateigröße an... ich wette, sie wird erheblich kleiner
Gruß
Christoph
Anzeige
AW: Range = Range.Value
03.05.2005 22:28:37
Luc:-?
Hallo Beide,
das ist natürlich so, wenn im UsedRange tatsächlich Formeln eingetragen sind!
Gruß Luc :-?
Hallo Ihr Beiden
04.05.2005 09:00:24
Peter
Hallo Luc und Christoph,
jeder von Euch hat für sich gesehen recht und für Euere Bemühungen auch vielen Dank. Der genaue Sachverhalt ist jedoch von den Voraussetzungen ein klein wenig anders und die Dateigröße der auszulagernden Tabellen kommt nicht durch den ja bekannten "Wildwuchs" den Tabellen durch Formatierungen bekommen können.
Selbst im Falle von absolut leeren Tabellen beträgt die Dateigröße bereits 2,65 MB, da die Tabellen jeweils in den ersten 4 Spalten Logos, Zellhintergründe und Rahmen beinhalten. Dies ist notwendig, da der Kunde diese Tabellen gleichzeitig als Druckformulare verwendet. Der reine Datenbereich selber (also von Zeile 5 bis 1000 bzw bis 65535)ist absolut "leer" und auch frei von Formeln. Die Dateneingabe erfolgt nur über Funktionen auf Userforms und läuft ausschließlich über VBA. Die Tabellen selber sind auch für den Kunden nicht zugänglich, diese sind per xlVeryHidden immer im versteckten Bereich und werden zwecks Bearbeitung (falls notwendig und geschützt durch Application.ScreenUpdating = False usw)nur kurzzeitig geholt und umgehend wieder "versenkt".
Aber Eure Erläuterungen zu den bewussten Codezeilen haben mir sehr geholfen. Ich muss sagen es ist immer wieder eine Freude hier im Forum fachliches zu besprechen.
Vielen Dank
Peter S.
Anzeige
Danke für die positive Meinung/Reaktion! owT
04.05.2005 12:37:54
Luc:-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige