Clever-Excel-Forum

Normale Version: VBA: erste Zeile in der die Zelle in A leer ist
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,
ich habe das schon mal hingekriegt in der Vergangenbheit, aber momentan beiße ich mir die Zähne daran aus:

Code:
Range("F5:AC66").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("WB1.xlsx").Activate
    Range("E4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Range ("E4") muß ersetzt werden durch Range("E"&erste Zeile in der A leer ist).
Eigentlich keine schwierige Sache.
MfG
Aloha
so als Gedankenanschubser Smile
Code:
do while cells(zeile,1)<>""
    zeile = zeile +1
loop
erste_Zeile_in_der_A_leer_ist = zeile
ungetestet.
Hallo Aloha,

Columns(1).SpecialCells(xlCellTypeBlanks).Cells(1, 5).Select

Gruß Uwe
Hallo,

Danke schon mal

Der nächste Schritt:
Ein erster Datenblock (gelb) wird kopiert.

Da die Daten aus Blättern stammen in denen jeweils 2 Zellen vertikal miteinander verbunden sind, ist diese Verbindung nach dem Kopiervorgang aufgelöst und zwischen 2 Zeilen mit Daten gibt es eine Leerzeile
Diese Leerzeilen möchte ich durch Sortieren nach Spalte A, dann B, sortieren.
Bei dem ersten (gelben) Block ist es noch ziemlich einfach: die erste Zeile ist bekannt und die letzte kann ich mit dem Code definieren.

Dann kopiere ich den zweiten Block unter den ersten, schon sortierten, und muß zum Sortieren des zweiten die erste (da liegt mein Problem, da es ja schon den gelben Block gibt) zu sortierende Zeile und die letzte die Daten enthält ermitteln.

Wie kann ich die erste Zeile aus dem blauen Block ermitteln? Vielleicht indem ich nach der ersten freien Zeile die aus der Auflösung der Verbindung entstanden ist (Zeile 11 im Beispiel) suche und davon 1 abziehe?
Siehe angehängtes WB das diese Situation illustriert.

MfG
Alooha
Hallöchen,

ich würde die Dir bekannte / von Dir definierte letzte vom gelben Block nehmen und eins dazuzählen ...
Hallo,
Nach dem Kopiervorgang des blauen Blocks ist die letzte gelbe Zeile ja nicht mehr idenzifierbar, weil anschließend die erste blaue kommt. Sie ist allerdings noch vor dem Kopiervorgang zu identifizieren, und identifiziert, um den Beginn des blauen Blocks zu bestimmen. Ich müsste also diese Information behalten für das Sortieren.

Alooha
Hallöchen,

- schaue Dir mal an, wie Variablen globale oder modulweit deklariert werden können
- schlimmstenfalls markierst Du die Zeile irgendwie oder speicherst die Nummer der letzte Zeile irgendwo
- oder Du suchst die erste leere Zeile z.B. mit Range("A1").End(xlDown).Row+1 - Dabei sollten zumindest A1 und A2 gefüllt sein.
- falls Du im ersten code das Makro für den zweiten Kopiervorgang aufrufst, kannst Du die Zeile als Parameter übergeben
Hallo,

es würde auch so gehen: 

  • in Spalte G irgendwelche Inhalte einfügen. 
  • In Zeile 1 Spaltenüberschriften einfügen. 
  • Autofilter aktivieren.
  • so filtern, dass nur die leeren Zeilen stehen bleiben.
  • leere Zeilen löschen.
  • Filter aufheben.
  • leere Zeilen sind weg.
Hallo,

ich bin etwas weiter gekommen und hänge nun an dem Problem, dass Excel nach dem Sortieren die aussortierten Zeilen als nicht leer ansieht.
Wie kann ich das lösen?
Ich habe schon meherere Methoden die ich im internet gefunden habe probiert, aber die letzte Zeile ist und bleibt immer die letzte Zeile vor dem Sortiervorgang.

Wie kann ich Excel VBA dazu bringen, die Zellen in Spalte A, in denen es nach dem Sortiervorgang keine Werte gibt, als leer zu betrachten, also diejenige, die als letzte einen Wert enthält, als letzte zu betrachten?

MfG
Alooha
Hallo Alooha,

in deinem (zu erstellenden) Makro findest du ja die erste freie Zelle (in deinem Fall A11), Diesen Wert minderst du um 1 (also auf 10), die letzte beschriebene Zelle sollte durch den Kopiervorgang bekannt sein, wenn nicht suchst du auch diese [ letzteZelle = Cells(1001, 1).End(xlUp).Row  ] und damit hast du den Bereich den du sortieren möchtest. 

mfG
Seiten: 1 2