2.1k Aufrufe
Gefragt in Tabellenkalkulation von
hallo,

ich habe ab der Spalte D in jeder 6. Spalte eine Liste..
Da die Zeilen unterschiedlich lang sind, weiß ich nie wie weit sie runter gehen..

D hat 10 Einträge J 5 und P.25..
Da diese varieren können, kann ich nie eine fixe länge definieren um eine automatische Formatierung durchlaufen zu lassen..

Wie bekomme ich es hin, dass ein makro mir sagt, welche die unterste Zelle im Bereich D bis AZ ist und die Zeilen von 10 bis zur untersten rot markiert.

Danke

6 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Halo Geraldin,
MsgBox Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row

Gruß hajo
0 Punkte
Beantwortet von
vielen Dank..

ich hatte die version für mich gestalltet..
was hälst du davon? es funktioniert auf jeden fall.:-)


Dim bis As Integer

bis = 20
For sp = 4 To 110 Step 6
bisneu = Range(Cells(65536, sp), Cells(65536, sp)).End(xlUp).Row


If bisneu >= bis Then
bis = bisneu
Else
End If

Next


danke für deine meinung
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Geraldin,

Dein Code ist langsamer da jede Spalte 6 Spalte geprüft wird.
Das mit jeder 6. Spalte prüfen Stand aber nicht im ersten Beitrag, oder ich habe es überlesen.
Dein Code liefert ein falscher Ergebnis, falls die letzte Zelle in der Spalte belegt.

Gruß Hajo
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

aus meiner Sicht besser so

Dim bis As Integer
bis = 0
For sp = 4 To 110 Step 6
bisneu = Range(Cells(65536, sp), Cells(65536, sp)).End(xlUp).Row
If bisneu > bis Then bis = bisneu
Next

Da bei einer If-Anweisung auf den Rest verzichtet werden kann und ich immer mit 0 bei "bis" anfangen würde, das passt immer.
Bei der If-Abfrage brauch Bis nur bei größerem "bisneu" ersetzt werden

2. Lösung

Dim bis As Integer
bis = 0
For sp = 4 To 110 Step 6
bisneu = Range(Cells(65536, sp), Cells(65536, sp)).End(xlUp).Row
If Range(Cells(65536, sp), Cells(65536, sp)).End(xlUp).Row > bis Then bis = Range(Cells(65536, sp), Cells(65536, sp)).End(xlUp).Row
Next


Gruß

Helmut
0 Punkte
Beantwortet von
Super hilfe.. da werde ich wohl meine restlichen sachen noch umschreiben oder bereinigen :-)

Danke

hab aber gleich das nächste problem. :-(
For intI = 21 To bis Step 2

Range(Cells(intI, 1), Cells(intI, 100)).Select

Selection.RowHeight = 52.5
Selection.Insert Shift:=xlDown

Es sollen bis zur untersten zeile immer leerZeilen eingefügt und davor die höhe verändert werden.. irgendwie klappt es nicht.. kann es an der zeite mit dem Range liegen?? wie schreib ich eigentlich den Rows("intI:intI").Selection so um dass er es mit den variablen akzeptiert?

Danke
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

hier ist das Problem wahrscheinlich, dass die Schleife bis zum alten "bis"-Wert läuft und dann Schluss ist

For intI = bis To 21 bis Step -2

Range(Cells(intI, 1), Cells(intI, 100)).Select

Selection.RowHeight = 52.5
Selection.Insert Shift:=xlDown

Next intl

Versuch es mal so, da ich nicht genau weiss was du vorhast nur mal als Vorschlag.

Gruß

Helmut
...