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

Leerzeilen bis letzten Eintrag löschen

Leerzeilen bis letzten Eintrag löschen
07.12.2006 17:05:07
Stephan
Hallo an Alle!
Ich bin neu im Forum und habe mich Betreff der Thematik zum Löschen von Leerzeilen auch schon in den reichhaltigen Threads & Vorschlägen umgeschaut, aber...
Da die Thematik VBA in Verbindung mit Excel für mich doch relativ neu ist, hoffe ich auf einen Denkansatz.
Mein Fall:
In unserer Firma tragen wir in einer fortlaufenden Exceltabelle unsere Wareneingänge inkl. Informationen des Lieferscheins vom 01.01.jjjj bis zum 31.12.jjjj ein.
Da es Artikel gibt, die bei uns von der Wareneingangsprüfung nach einer bestimmten Vorgabe (Skip-Lot-Verfahren) ausgeschlossen sind, sollen diese in einer jeweiligen eigenen Exceltabelle erfasst werden.
Dies habe ich über diverse Zellbezüge auch erstellt und nach dem Öffnen der jeweiligen Artikeldatei werden die Bezüge genau für den hier eingetragenen Artikel aktualisiert und durch mein schon vorh. Script (siehe unten) automatisch "bearbeitet".
Mein Problem:
Durch den direkten Bezug zur "Eintragstabelle" entsteht durch den Wareneingang zu einem beliebigen Datum in der jeweiligen Artikeltabelle Leerzeilen (ist ja auch klar, da die Wareneingänge eines Artikel ja nicht hintereinander weg im Jahr kommen, sondern sich beliebig verteilen).
Ich habe es mit der Hilfe dieses Forums und seiner Kreativen Köpfe (Danke, danke...) hinbekommen, dass "alle Leerzeilen" ab dem letzten Eintrag der Tabelle bis Zeile 11 (hier fangen die Daten an) gelöscht werden;
siehe VBA-Script:

Sub Auto_Open()
Dim zeile As Long
Dim letzte As Long
letzte = Range("B1000").End(xlUp).Row
Application.ScreenUpdating = False
For zeile = letzte To 11 Step -1
If WorksheetFunction.CountBlank(Rows(zeile)) = 256 Then Rows(zeile).Delete
Next zeile
Application.ScreenUpdating = True
MsgBox "Mögliche Leerzeilen wurden entfernt"
End Sub

Was ich aber erreichen möchte ist, dass nur
...bis zum (abwärts ab Zeile 11) oder
ab dem (rückwärts bis Zeile 11)...
...letzten heutigem Datums-Eintrag (Date) - hier in Spalte B - die Leerzeilen gelöscht werden, da mir sonst die noch benötigten Zellbezüge unterhalb des aktuellen Datums für das fortlaufende Jahr verloren gehen.
Ganz sicher ist meine Methode nicht die Beste & Einfachste, aber soweit läuft es ja.
Meine Bitte, kann man den vorhanden Code nutzen und um das Value Date irgendwie ergänzen, oder nicht?
Ich danke schon einmal im voraus und entschuldige meine lange Anfrage, aber lieber mehr Informationen, als zu wenig ;-)
Stephan, der VBA-Anfänger

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

Betreff
Datum
Anwender
Anzeige
AW: Leerzeilen bis letzten Eintrag löschen
07.12.2006 18:11:27
IngGi
Hallo Stephan,
in der eingebauten For...Next-Schleife sucht er in Spalte B von unten (letzter Eintrag) nach oben nach dem ersten Datum, das nicht nach dem heutigen Datum liegt. Die entsprechende Zeile wird dann der Variablen "letzte" zugewiesen. Anschließend fährt er fort wie gehabt.

Sub Auto_Open()
    Dim zeile As Long
    Dim letzte As Long
    letzte = Range("B1000").End(xlUp).Row
    For zeile = letzte To 1 Step -1
        If Not CInt(Range("B" & zeile)) > Date Then
            letzte = zeile
            Exit For
        End If
    Next 'zeile
        Application.ScreenUpdating = False
                For zeile = letzte To 11 Step -1
                    If WorksheetFunction.CountBlank(Rows(zeile)) = 256 Then Rows(zeile).Delete
                Next zeile
        Application.ScreenUpdating = True
        MsgBox "Mögliche Leerzeilen wurden entfernt"
End Sub
Code eingefügt mit Syntaxhighlighter 4.3

Gruß Ingolf
Anzeige
AW: Leerzeilen bis letzten Eintrag löschen
07.12.2006 19:21:55
Stephan
Danke für die rasche Antwort!
Beim Ablauf des "neuen" Scripts habe ich allerdings einen Laufzeitfehler '13' - Typen unverträglich in der Zeile:
If Not CInt(Range("B" & zeile)) > Date Then
Was tun? Muss die Variable letzte als Date definiert werden?
Tschö, Stephan
AW: Leerzeilen bis letzten Eintrag löschen
07.12.2006 20:22:24
Stephan
Danke für die rasche Reaktion auf meine Frage.
Ich gebe dir Recht, dass mein Ansatz nicht der Beste ist, aber unter den gegebenen Umständen (Keine Ahnung von der Materie - jaja, die Selbstüberschätzung - und der Zeitdruck in der Firma...).
Ich habe nachfolgend die beiden Dateien gepostet, mit denen ich momentan für die Lösung arbeite.
https://www.herber.de/bbs/user/38816.xls mein Skip_Lot_050 0115 503

Die Datei https://www.herber.de/bbs/user/38818.xls wurde aus Datenschutzgründen gelöscht

mein WE_Protokoll_2007
Die eingegebenen Daten in der WE_Protokoll_2007 werden je nach Artikel von der entsprechenden Skip-Lot-Datei (hier Artikel 050 0115 503) übernommen (relative & absolute Zellbezüge).
Dein Ansatz ist, dass die Datei WE_Protokoll_2007 die Daten in die jeweiligen Dateien überträgt.
Ich hoffe, dass die Dateien aussagekräftig genug sind.
In der WE_Protokoll_2007 sind in den Zeilen noch bedingte Formatierungen vorhanden, die dem jeweiligen Mitarbeiter anzeigen, dass hier ein Skip-Lot-Artikel eingetragen wird.
In der Skip-Lot-Artikel-Datei werden später noch Abfragen für den Prüfstatus editiert, dass klappt aber mit den normalen Excel-Funktionen (geschachtelte WENN-Funktionen).
Vielen Dank, Stephan
Anzeige
AW: Leerzeilen bis letzten Eintrag löschen
07.12.2006 20:35:41
P@ulchen
Hallo Stephan,
gibt es zu jeder Artikelnummer eine eigene Datei? Ist die Artikelnummer auch der Dateiname?
Liegen die Skip-Lot-Dateien alle im gleichen Ordner wie die WE_Protokoll_2007?
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

AW: Leerzeilen bis letzten Eintrag löschen
07.12.2006 23:45:55
P@ulchen
Hallo Stephan,
hier mal ein Lösungsvorschlag:
https://www.herber.de/bbs/user/38822.xls
Ich habe in die Tabelle einen Button eingefügt, über den die Daten importiert werden.
Du mußt im Code nur noch den Pfad zur WE-Datei anpassen, die Stelle habe ich gekennzeichnet.
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

Anzeige
AW: Leerzeilen bis letzten Eintrag löschen
08.12.2006 16:26:52
Stephan
Hallo P@ulchen!
Also ...mal einen Lösungsvorschlag... ist gut, das ist DIE LÖSUNG für mich! Ich kann nur tausend mal Danke sagen. Das Script läuft wirklich super!
Da es sich nicht um mein Gedankengut und Werk handelt, werde ich dies in dem Makro auch hinterlegen, um mich nicht mit fremden Federn zu schmücken.
Noch einmal Danke für die schnelle Hilfe (auch an IngGi), das hat mich ganz weit nach vorne gebracht (und ich werde jetzt VBA büffeln).
Tschö & Gruß aus Bielefeld, Stephan
AW: Leerzeilen bis letzten Eintrag löschen
08.12.2006 17:41:32
P@ulchen
Hallo Stephan,
vielen Dank für die Rückmeldung!
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige