Hallo, ich möchte in einer Excel Datei per vba code bis zur ersten leeren zeile gehen, wie tue ich das?

...komplette Frage anzeigen

5 Antworten

Ich habe mal nur Deine Schleife ergänzt:

If Cells(z, 1) = "" Then
'leere Zelle gefunden
'leerAbWo = Cells(z, 1).Select 'gefundene Zelle selektieren
'jetzt ab da an bis AA markieren und rest löschen!!!
Range(Cells(z, 1), Cells(zeil, 27)).ClearContents
MsgBox Cells(z, 1).Address 'leerAbWo

Exit Sub

Richtig so? Teste mal genau.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PrimMay
03.03.2017, 15:03

Super das hat geklappt, aber ich hatte einen gravierenden Denkfehler :-S
nun ich lade die Daten von mehreren Excel Dateien in eine Excel Datei rein. Und wenn ich diesen befehl in der Excel Datei ausführe wo alle Daten drinnen sind, dann wird sobald eine leere zeile erscheint der rest gelöscht, aber auch ausgefüllte datensätze. Wie kann ich einen stop einbauen, sodass es nur die leeren markiert und löscht? Vielleicht nach der if Bedingung beim markieren nur die leeren markieren dann löschen und dann weiter im code checken ob leer usw...

0
Kommentar von Oubyi
08.03.2017, 12:46

Danke fürs

0

Teste mal in einer Kopie, ob das tut, was Du tun möchtest:

Range(Cells(Range("A1").End(xlDown).Offset(1, 0).Row, 1), Cells(100000, 26)).Delete

Annahme: Leere Zeile in Spalte A suchen, sonst das A1 anpassen
Max. 100000 Zeilen genutzt (sonst eben erhöhen)
Bis Spalte Z wird gelöscht (sonst wie zuvor: erhöhen, dh.. die 26)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PrimMay
03.03.2017, 15:39

Das hat leider gar nicht funktioniert, aber danke...fürs löschen habe ich die lösung schon aber es soll anhalten sobald ein voller datensatz da ist...bzw. mit Inhalt. Dort soll er aufhören mit löschen und überspringen und dann wenn wieder etwas leeres kommt, die leeren markieren und wieder löschen usw.

0

...und wenn nach der ersten leeren Zeile nch was kommt? Auch löschen, oder suchen bis zum absoluten Datenende?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PrimMay
03.03.2017, 10:41

auch wenn nach der ersten zeile was kommt soll gelöscht werden

0

Sub func()

Const Max_X =  ... ' hier die maximale Spaltenzahl angeben
Const Max_Y =  ... ' hier die maximale Zeilenzahl angeben

Dim erste_leere_Zeile As Long
Dim x As Long
Dim y As Long
Dim leer As Boolean
Dim erste_leere_Zeile_String As String
Dim Max_Y_String As String

For y = 1 To Max_Y
  leer = True
 
  For x = 1 To Max_X
    If CStr(Cells(y, x).Value) <> "" Then leer = False
  Next
 
  If leer Then
    erste_leere_Zeile = y
    Exit For
  End If

Next

If erste_leere_Zeile = 0 Then
    MsgBox ("Keine leere Zeile gefunden")
    End
End If

Rows(CStr(erste_leere_Zeile) & ":" & CStr(Max_Y)).Hidden = True

'For y = erste_leere_Zeile To Max_Y
'  Rows(y).EntireRow.Hidden = True
'Next

End Sub

 

Ich habe die Zeilen ausgeblendet, nicht gelöscht in diesem Beispiel.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PrimMay
03.03.2017, 12:06

wie wäre dieser Code mit löschen?

0

Hallo kidiktol, 

ich würde diese VBA-Funktion benutzen: 

Dim LastRow As Integer
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Distel

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PrimMay
03.03.2017, 10:58

ja das habe ich vorher auch, aber das Problem ist, dass eben in diesem Template, die leeren zeilen als nicht leer gesehen werden

0

Was möchtest Du wissen?