Clever-Excel-Forum

Normale Version: Excel VBA Befehl unklar
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich lerne gerade mit ein paar Videos mit Excel VBA umzugehen. Dabei bin ich auf folgenden Befehl gestoßen, den ich detailliert nicht verstehe:

last = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row

Es wurde die Variable "last" als Integer definiert. Ich habe bereits herausgefunden, dass im aktiven Tabellenblatt die Zeile vom Blattbeginn bis zum letzten Eintrag gezählt wird. Aber was ich nicht verstehe ist, welcher Part in diesem Befehl für was zuständig ist? Wie kann ich z.B. diesen Befehl abändern, damit vom ersten Eintrag in der Spalte B bis zum letzten gezählt wird?

Danke für eure Hilfe.

Vg
Dominik
Hallo,

Das geht quasi (referenziert) auf die letzte Zeile in Spalte 2
Code:
ActiveSheet.Cells(Rows.Count, 2)

Das springt von der obigen Referenz aus nach oben (so als ob Du Ende und Pfeil nach oben drücken würdest). Also in die erste befüllte Zelle von unten in der Spalte 2
Code:
.End(xlUp)

Das Ermittelt die Zeilennummer der obigen Referenz (erste befüllte Zelle von unten in Spalte 2)
Code:
.Row
Hallo,

vielen Dank schon mal für die Antwort. Was ich aber noch nicht verstehe ist folgendes:

Wenn ich beispielsweise in den Zellen B3 bis B10 Inhalt habe und ich lese die Variable aus, so bekomme ich als Ergebnis 10 obwohl die Zellen 1,2 und 2,2 leer sind.

Wenn ich den Code jetzt richtig verstanden habe, würde er doch mit dem ersten Teil in die Zelle B10 gehen, durch .End(xlUp) auf B3 und ermittelt dann die Zeile 3. Wie kommt das System aber auf das Ergebnis 10?

Danke nochmal.
Hi,

[Quote] mit dem ersten Teil in die Zelle B10 gehen[\quote]
Ne, der erste Teil nimmt die Zelle in der Zeile 1.048.576. Rows.Count gibt die Anzahl der Zeilen in einem Arbeitsblatt zurück. Egal, ob gefüllt oder nicht.
Du kannst das hervorragend selbst rausfinden, in dem du entweder alle Teilobjekte in Zwischenvariablen packst, oder im Einzelschrittmodus mit dem Mauszeiger über einer Eigenschaft verharrt.

Im übrigen empfiehlt es sich, für eine Variable,die eine Zeilennummer aufnehmen soll, den Datentyp Long zu benutzen.

Als weitere Anmerkung noch: du hast in deiner Codezeile streng genommen keinen Befehl verwendet. Du liest nur eine Eigenschaft eines Range-Objektes aus und weist den Rückgabewert einer Variablen zu.

Viele Grüße
derHoepp
vom Handy gesendet
Jetzt ist es mir klar. Vielen herzlichen Dank!