Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel VBA Befehl unklar
#1
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
Antworten Top
#2
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
Gruß
Michael
Antworten Top
#3
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.
Antworten Top
#4
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
Antworten Top
#5
Jetzt ist es mir klar. Vielen herzlichen Dank!
Antworten Top
#6
....
https://office-fragen.de/thread-28412.html
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste