Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1660to1664
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

VBA - Überlauffehler nach "Aufräumaktion"

VBA - Überlauffehler nach "Aufräumaktion"
29.11.2018 11:51:55
Christoph
Schönen guten Morgen Leute,
ich bin als VBA-Anfänger beim "aufräumen" eines kleinen Makros auf einen Fehler gestoßen, den ich mir nicht erklären kann.
Ich hatte einen ursprünglichen Code der wie folgt sehr gut seine Arbeit gemacht hat:
Sub Ersten_Wert_ausgeben()
' Makro12 Makro
Dim Spalte As Integer
Spalte = 5
Do While ActiveSheet.Cells(8, Spalte)  0
Dim Zeile As Integer
Zeile = 41
Do Until ActiveSheet.Cells(Zeile, Spalte)  0
Zeile = Zeile + 1
Loop
ActiveSheet.Cells(Zeile, Spalte).Copy
ActiveSheet.Cells(25, Spalte).PasteSpecial xlPasteValues
Spalte = Spalte + 1
Loop
End Sub
Hier sind die Variablen wild im Code definiert. Ich wollte nun etwas aufräumen und die Deklarationen an den Anfang verlagern. Also quasi:
Sub Ersten_Wert_ausgeben()
Dim Spalte As Integer
Spalte = 5
Dim Zeile As Integer
Zeile = 41
Do While ActiveSheet.Cells(8, Spalte)  0
Do Until ActiveSheet.Cells(Zeile, Spalte)  0
Zeile = Zeile + 1
Loop
ActiveSheet.Cells(Zeile, Spalte).Copy
ActiveSheet.Cells(25, Spalte).PasteSpecial xlPasteValues
Spalte = Spalte + 1
Loop
End Sub
Doch nun wird ein Überlauffehler bezüglich der "Zeile = Zeile +1" ausgegeben. Ändert sich durch das "nach vorne verlagern" etwa die Gültigkeit der Deklaration? Oder liegt der Fehler gar ganz wo anders?
Würde mich sehr über erhellende Einblicke freuen.
Ciao

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Überlauffehler nach "Aufräumaktion"
29.11.2018 12:03:00
Zwenn
Hallo Christoph,
der Datentyp Integer kann nur Werte zwischen -32.768 und 32.767 aufnehmen. Wenn Dein Makro zur Zeile 32.768 kommt, gibt es einen Überlauffehler. Ändere den Datentyp in der Deklaration auf Long. Der Datentyp Long kann Zahlen zwischen -2.147.483.648 und 2.147.483.647 aufnehmen. Damit sind in jedem Fall alle möglichen Zeilenwerte in einer Excel-Tabelle abgedeckt.
Du zählst ausserdem die Spalten immer weiter hoch. Da nutzt Dir die Änderung des Datentyps aber nix. Auch wenn es unwahrscheinlich ist, kann es hier natürlich auch zum Überlauf-Fehler kommen.
Hier noch eine Übersicht zu den Datentypen insgesamt:
https://www.herber.de/mailing/vb/html/vagrpdatatype.htm
Viele Grüße,
Zwenn
Anzeige
AW: VBA - Überlauffehler nach "Aufräumaktion"
29.11.2018 12:17:00
Zwenn
Hallo nochmal,
sehe grade, dass Du die Initialisierung Zeile = 41 auch nach oben gezogen hast. Die lag vorher in der ersten Do-Schleife und wurde somit bei jedem Durchlauf der äußeren Schleife zurück auf 41 gesetzt, was wohl auch so sein soll, weil Du gehst ja Spaltenweise vor. Also einfach Zeile = 41 wieder in die erste Do-Schleife packen.
Viele Grüße,
Zwenn
AW: VBA - Überlauffehler nach "Aufräumaktion"
29.11.2018 12:26:52
Christoph
Hey Zwenn, danke für deinen schnellen Kommentar!
Die Begrenzungen von Integer sind mir glücklicherweise bewusst. Ich verwende für größere Haufen "Long" und für Texte "String", was bisher immer irgendwie geklappt hat ^^.
Tatsächlich hat sich, nachdem ich die Initialisierung (wieder ein Wort gelernt) wieder in das Makro gepackt habe, alles wieder zum Besten eingestellt. Also danke für den Tipp!
Bisher macht VBA wirklich Spaß. Es gibt immer was neues zu lernen und auszuprobieren/optimieren.
LG Christoph
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige