Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: letzte Zeile finden - Überlauf -> Laufzeitfehler 6

letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 09:16:21
Larissa
Hallo zusammen,
ich möchte von einer Eingabeoberfläche Werte in eine große Tabelle einlesen (viele Spalten). Es werden immer unterschiedliche Spalten ausgefüllt, also einmal Spalte B, dann mal Spalte C & D usw.
Dazu habe ich folgendes Formular erstellt:
Private Sub CommandButton3_Click() ' Übernehmen
Dim erste_freie_zeile As Integer
erste_freie_zeile = Sheets("daten").UsedRange.SpecialCells(xlCellTypeLastCell).Row
Sheets("Daten").Cells(erste_freie_zeile, 91) = TextBox1.Text
Sheets("Daten").Cells(erste_freie_zeile, 92) = TextBox2.Text
Sheets("Daten").Cells(erste_freie_zeile, 13) = ComboBox1.Text
Sheets("Daten").Cells(erste_freie_zeile, 10) = ComboBox2.Text
Unload Me
End Sub

Ich bekomme in aber immer bei
erste_freie_zeile = Sheets("daten").UsedRange.SpecialCells(xlCellTypeLastCell).Row
den Lauffehler 6 - Überlauf.
Habe auch aus "As Integer" auch schon "As Long" gemacht, aber dann passiert gar nichts mehr...
Wäre euch für eure Hilfe dankbar =)
Grüße
Larissa

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 09:49:20
Ewald
Hallo Larissa,
Long wäre schon richtig bei Zeilen.
Was heißt denn geht garnichts mehr
Laß mal folgendes Makro in der Tabelle laufen
Sub Adresse()
MsgBox ActiveSheet.UsedRange.Address(0, 0)
End Sub
um zu sehen wie groß Usedrange ist.
Gruß Ewald

Anzeige
AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 10:02:20
Larissa
Hallo Ewald,
danke für die schnelle Meldung.
Ich bekomme "A1:DK1048537" von Excel angezeigt.
Wenn ich Integer auf Long ändere und dann auf Nummer übernehmen klicke, dann wird keine neue Zeile angelegt und auch keine bestehende Zeile verändert...
Danke =)

AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 10:49:23
Ewald
Hallo Larissa,
ist die Tabelle denn wirhlich so groß, du hast ja gerade mal 39 Zeilen bis zum Ende.
Laß nochmal dieses Makro laufen
Sub Adresse()
MsgBox ActiveSheet.UsedRange.Address(0, 0)
MsgBox ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
End Sub
jetzt wird dir die erste freie Zeile angezeigt.
Gruß Ewald

Anzeige
AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 11:01:50
Larissa
Hallo Ewald,
habe das hier nochmal ablaufen lassen
Public Sub letzte_spalte_1()
Dim letztespalte As Long
letztespalte = Sheets("Daten").UsedRange.SpecialCells(fncLastCellWithContent).Row
MsgBox letztespalte
End Sub
Erhalte 1048537 Zeilen.
Bis Zeile 76 ist die Tabelle bereits ausgefüllt.
Also sollte Excel meine nächste Eingabe automatisch in Zeile 77 schreiben.
Ein Problem könnte vllt sein, dass in Spalte X und AK eine Formel eingetragen ist und dort noch eine "0" steht. Zählt er diese vllt mit?

Anzeige
AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 11:04:39
Larissa
statt "fncLastCellWithContent", steht natürlich "xlCellTypeLastCell"....

AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 11:16:20
Ewald
Hallo Larissa,
jetzt weißt du auch in welcher Zeile geschrieben wird.
Markiere alle Zellen ab Zeile 80 bis nach unten und Inhalte löschen.
Datei speichern,schließen, wieder öffnen und dann nochmal das Makro laufen lassen.
Welche Zeile wird angezeigt.
Gruß Ewald

Anzeige
AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 11:19:47
Larissa
Hallo Ewald,
warum ab Zeile 80 löschen?
und dann sind doch meine automatischen Formeln weg oder?
Grüße Larissa
und danke für deine Mühe

AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 11:38:23
Ewald
Hallo Larissa,
wenn du die Formeln bis da unten behalten willst, dann kannst du Usedrange nicht benutzen.
wenn es ausreicht eine bestimmte Spalte abzufragen, weil andere Spalten die gleiche Länge haben,
könntest du so abfragen

erste_freie_zeile = Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row + 1
hier wird die Spalte A abgefragt
Gruß Ewald

Anzeige
AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 12:25:59
Larissa
Hallo Ewald,
Hm das hatte ich davor, allerdings habe ich eben das Problem mit den unterschiedlich langen Spalten ;)
Habe jetzt alle Formeln gelöscht und probiere es nochmal.
Vllt kann ich die Fromeln dann über VBA und nicht in Excel schreiben.
Grüße Larissa

AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 12:37:57
hary
Moin
Teste mal die letzte so rauszubekommen.
Spalten(hier A bis Z) anpassen.
Dim lngLetzeZeile As Long
lngLetzeZeile = [A:Z].Find(What:="*", After:=[A1], LookIn:=xlFormulas, SearchDirection:= _
xlPrevious).Row
MsgBox lngLetzeZeile

gruss hary

Anzeige
AW: oder..
03.12.2014 12:43:30
hary
Moin nochmal
.. nach Inhalt.
Dim lngLetzeZeile As Long
lngLetzeZeile = [A:Z].Find(What:="*", After:=[A1], LookIn:=xlValues, SearchDirection:= _
xlPrevious).Row
MsgBox lngLetzeZeile

gruss hary

AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 13:06:52
Larissa
Hallo Hary,
total super, das hat jetzt auf Anhieb funktioniert.
Es gibt mir zwar die letzte befüllte Zeile aus, aber die nächste leere Zeile ist ja dann nur Row+1.
Vielen Dank, euch zwei!
Grüße Larissa

Anzeige
AW: letzte Zeile finden - Überlauf -> Laufzeitfehler 6
03.12.2014 13:00:53
Ewald
Hallo Larissa,
dein Code schreibt doch immer in Spalte 10, gibt es da Leerzeilen oder kannst du da die letzte Zeile abfragen.
Gruß Ewald
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Letzte Zeile in Excel finden ohne Laufzeitfehler 6


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel mit Alt + F11.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Private Sub CommandButton3_Click()
       Dim erste_freie_zeile As Long
       erste_freie_zeile = Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row + 1
       Sheets("Daten").Cells(erste_freie_zeile, 1) = TextBox1.Text
       Sheets("Daten").Cells(erste_freie_zeile, 2) = TextBox2.Text
       Sheets("Daten").Cells(erste_freie_zeile, 3) = ComboBox1.Text
       Sheets("Daten").Cells(erste_freie_zeile, 4) = ComboBox2.Text
       Unload Me
    End Sub
  4. Klicke auf die Schaltfläche in deiner Benutzeroberfläche, um die Daten zu speichern.

  5. Überprüfe die Tabelle "Daten" auf die neuen Einträge.


Häufige Fehler und Lösungen

  • Laufzeitfehler 6 - Überlauf: Dieser Fehler tritt auf, wenn du versuchst, eine zu große Zahl in eine Variable vom Typ Integer zu speichern. Stelle sicher, dass du As Long verwendest, um dies zu beheben.

  • Keine neuen Zeilen werden hinzugefügt: Prüfe, ob die UsedRange korrekt ist. Es kann sein, dass Excel mehr Zeilen zählt als tatsächlich verwendet werden. Verwende den Code, um die letzte Zeile zu ermitteln:

    MsgBox Sheets("Daten").UsedRange.SpecialCells(xlCellTypeLastCell).Row
  • Formeln und leere Zellen: Wenn Formeln in der Tabelle vorhanden sind, die auf leere Zellen verweisen, könnte dies die UsedRange beeinflussen. Lösche gegebenenfalls die Formeln in nicht benötigten Zeilen.


Alternative Methoden

  1. Verwendung von Find:

    Du kannst auch die Methode Find verwenden, um die letzte befüllte Zeile zu ermitteln:

    Dim lngLetzeZeile As Long
    lngLetzeZeile = Sheets("Daten").Cells.Find(What:="*", After:=Sheets("Daten").Cells(1, 1), LookIn:=xlValues, SearchDirection:=xlPrevious).Row
  2. Alternative zur usedrange:

    Wenn du eine bestimmte Spalte abfragen möchtest, kannst du den folgenden Code verwenden:

    erste_freie_zeile = Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row + 1

Praktische Beispiele

  • Beispiel für das Einfügen von Werten:

    Nehmen wir an, du möchtest die Werte aus zwei Textboxen und zwei Comboboxen in die Tabelle "Daten" einfügen. Der oben angegebene Code erledigt dies.

  • Beispiel für die Überprüfung der letzten Zeile:

    Um die letzte Zeile anzuzeigen, kannst du folgendes Makro verwenden:

    Sub LetzteZeileAnzeigen()
       Dim letzteZeile As Long
       letzteZeile = Sheets("Daten").UsedRange.SpecialCells(xlCellTypeLastCell).Row
       MsgBox "Die letzte befüllte Zeile ist: " & letzteZeile
    End Sub

Tipps für Profis

  • Vermeide die Verwendung von UsedRange, wenn du viele Formeln oder leere Zellen hast, da dies zu falschen Ergebnissen führen kann. Nutze stattdessen gezielte Abfragen für bestimmte Spalten.

  • Nutze die Option Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.

  • Regelmäßige Datenbereinigung: Halte deine Datenbank sauber, indem du überflüssige Zeilen und Formeln entfernst. Dies wird helfen, zukünftige Probleme mit Überlauf zu vermeiden.


FAQ: Häufige Fragen

1. Warum bekomme ich den Laufzeitfehler 6? Der Laufzeitfehler 6 tritt auf, wenn eine Zahl in eine Integer-Variable gespeichert wird, die zu groß ist. Verwende stattdessen den Typ Long.

2. Wie kann ich die letzte Zeile finden, wenn es leere Zellen gibt? Verwende die Find-Methode oder frage gezielt eine bestimmte Spalte ab, um die letzte befüllte Zeile korrekt zu ermitteln.

3. Was ist der Unterschied zwischen UsedRange und Find? UsedRange gibt die gesamte verwendete Fläche zurück, kann aber durch leere Zellen oder Formeln beeinflusst werden. Find sucht gezielt nach Inhalten und ist oft zuverlässiger.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige