Das versteh doch wer will! Bin gerade dabei, mit ForNext-Schleifen herumzuprobieren. Ich hab mir auch schon ein Sortiermakro gebastelt, welches funtioniert, wie es soll. Jetzt habe ich die Essenz des Makros rauskopiert und in ein ganz jungfräuliches Excel-Arbeitsblatt reingesetzt. Beim ersten Click auf die Schaltfläche bleibt das Makro in Zeile 7 stehen und selektiert nur den Bereich für die erste Zeile. Erst beim zweiten Click zeigt es den gesamten Tabellenbereich.Hat jemand 'ne Ahnung wieso?
Code:
Sub Schaltfläche2_BeiKlick()
Dim i As Integer
For i = 7 To ActiveSheet.UsedRange.Rows.Count Next i
Range("A2") = i Range("A7:J" & i).Select Range("A7:J" & i).Activate
Zitat:wenn ich es richtig verstehe, ist das Tabellenblatt beim ersten Mal komplett leer. Die For-Schleife wird daher nicht durchlaufen.
...na eben nicht!
Ich hänge mal zwei Fotos mit ran.
Ursprünglich sieht die Tabelle so aus, wie Du sie auf den Fotos siehst.
Nach einem click auf die Schaltfläche zeigts mir Fall 1 an und in A2 gibts die 7 aus. Erst nach einem weiteren Click aktiviert es mir des gesamten Berich (Fall2) und git auch für i die 11 aus.
Moin, das Problem liegt etwas tiefer ... Nämlich im Missverständnis, dass
Code:
UsedRange.Rows.Count
die Nummer der letzten Zeile ausgibt. Setze mal genau in dieser FOR - Zeile einen Haltepunkt und beim ersten Durchlauf des Makros erkunde den Wert dieses oben aufgeführten Ausdrucks. Upps, da kommt ja 5 raus! Stimmt, es sind ja auch nur 5 Zeilen im UsedRange. Darum die bessere Variante:
Code:
Sub GMG() Dim i As Integer, lRow As Integer 'lastRow
lRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'For i = 7 To ActiveSheet.UsedRange.Rows.Count ' -> 7 To 4 geht nicht SO (nur mit Step For i = 7 To lRow '-> 7 To 11 :-) Next i
Range("A2") = i Range("A7:J" & i).Select Range("A7:J" & i).Activate End Sub
Und jetzt eine Frage an dich: Das Ergebnis ist wirklich korrekt, aber warum 12 Das musst du dir erarbeiten, weil das eine absolute Grundlage von Zählschleifen ist (und auch die meiste Denk-Falle).
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Hab zwar gerade viel um die Ohren, werde aber in den nächsten Tagen mal eure ganzen Alternativen durcharbeiten.
Komisch ist nur, daß ich schon zwei Makros auf der Basis dieses UsedRange.Rows.Count geschrieben habe, die auch genau das tun, was sie sollen. Doch wenn man sich das Ganze mal genauer anschaut, tun sie es nicht mehr zumal ja dieses UsedRange.Rows.Count von der Aussage her ziemlich eindeutig ist.