Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Letzte benutzte Zelle in Spalte / VBA-Scripte im Netz

465 views
Skip to first unread message

Martin Koerner

unread,
Aug 15, 2000, 3:00:00 AM8/15/00
to

Hallo,

auch auf die Gefahr hin, dass Ihr mich verflucht, weil ich Fragen
stelle, die schon tausend Mal gestellt wurden, möchte ich Euch kurz
folgendes Problem schildern:

Ich möchte in einer Spalte die letzte gefüllte Zelle herausfinden.
Bisher habe ich das über folgende Anweisung erledigt:

AnzahlZellen = Columns(1).SpecialCells(xlCellTypeLastCell).Row

Allerdings ist für Excel dabei nicht von Belang, welche Zelle die letzte
ist in der tatsächlich etwas drin steht, sondern die letzte Zelle die
unter Benutzung stand (d.h. es werden z.B. auch Zellen mitgezählt, die
zwar leer sind, die aber zu einem früheren Zeitpunkt mal gefüllt waren).
Außerdem habe ich manchmal den Eindruck, dass der Befehl sich nicht nur
auf die angegebene Spalte (in dem Beispiel Spalte 1) sondern auf alle
Spalten des Arbeitsblattes bezieht. *grübel*

Es wäre natürlich möglich das ganze über eine Abfrage aller Zellen in
der Spalte vorzunehmen, etwa so:

For i = 1 To 65535
If Cells(i, 1).Value = "" Then Exit For
Next
AnzahlZellen = i

Aber es kann natürlich nicht Sinn der Sache, jedes Mal alle Zellen
abzufragen ... ich bin mir sicher es gibt eine einfachere Möglichkeit,
und Ihr wartet nur darauf, sie mir mitzuteilen ;-))

Vielen Dank im voraus

Martin

BTW: Weiß jemand, wo ich einen guten VBA-Lehrgang/Script möglichst für
Excel 97 im Netz runterladen kann???


Dr. Eckehard Pfeifer

unread,
Aug 15, 2000, 3:00:00 AM8/15/00
to
hallo, ich mache es auch wie du und habe ebenfalls festgestellt, dass z.B.
UsedRange manchmal eben groesser ist als used Range (so wie frueher einmal
vielleicht), manchmal ist auch CurrentRegion nicht current Region, sondern
hat eine Zeile oder Spalte mehr. Also wundert es mich nicht wenn
xlSpecialLastcell auch mal nicht last Cell liefert. Wenn Du es auf eine
Spalte eingrenzt, soltte es allerdings auch dort bleiben. Oder etwa nicht?

Allerdings: Dein Befehl liefert die Zeilennummer der Spalte A und damit
nicht notwendig die Anzahl beschriebener Zellen. Ich wurde ihn wie folgt
abwandeln:

letzteNummer= usedrange.Columns(1).SpecialCells(xlCellTypeLastCell).Row

--
Mit freundlichen Gruessen
Eckehard Pfeifer

(http://www.dr-e-pfeifer.de)

Das VBA-Magazin - ein Blick lohnt sich immer: www.vba-magazin.de

"Martin Koerner" <martin....@mediaways.net> schrieb im Newsbeitrag
news:3999527B...@mediaways.net...

Ulrich Thanscheidt

unread,
Aug 15, 2000, 3:00:00 AM8/15/00
to
Hallo Martin!
Versuch's doch mal mit der Tabellenfunktion =ANZAHL2(A:A) oder =ANZAHL(A:A),
die dann in VBA wie folgt heißen:
anz = Application.WorksheetFunction.CountA(Columns(1))
anz = Application.WorksheetFunction.Count(Columns(1))
Vielleicht hilft's ja!
--
Bis die Tage

Uli


Martin Koerner <martin....@mediaways.net> schrieb in im Newsbeitrag:

Ullrich Schwarz

unread,
Aug 15, 2000, 3:00:00 AM8/15/00
to
Hallo Martin,

Bsp. für Spalte A:

MsgBox Range("A65536").End(xlUp).Address

MfG Ullrich

Heiner Berghoff

unread,
Aug 15, 2000, 3:00:00 AM8/15/00
to

> BTW: Weiß jemand, wo ich einen guten VBA-Lehrgang/Script möglichst
> für
> Excel 97 im Netz runterladen kann???


Hallo Martin,

schau Dich mal um bei
www.joanneum.ac.at/services/vbaexcel

Gruß Heiner aus Herdecke

heiner....@cityweb.de

Renzo Lazzarini

unread,
Aug 15, 2000, 3:00:00 AM8/15/00
to
Hallo Martin

Wenn du folgenden Befehl

Set Dummy = UsedRange

vor deine Codezeile setzt, wird der korrekte UsedRange neu berechnet.
Darauf gibt deine Formel die letzte Zeile der 1. Spalte an gemäss Kommentar
von Eckehard. Bei der Formel von Eckehard wird die Berechnung des
"UsedRange" implizit in seiner Formel durchgeführt was natürlich auch zum
gewünschten Resultat führt.

Gruss aus Zürich, Renzo


"Martin Koerner" <martin....@mediaways.net> schrieb im Newsbeitrag

news:3999527B...@mediaways.net...

Hallo,

AnzahlZellen = Columns(1).SpecialCells(xlCellTypeLastCell).Row

Vielen Dank im voraus

Martin

BTW: Weiß jemand, wo ich einen guten VBA-Lehrgang/Script möglichst für

Eckard Schwarz

unread,
Aug 16, 2000, 3:00:00 AM8/16/00
to
Hallo Martin

Sub Letzte_Zeile()
lz = ActiveSheet.Cells(65536, 1).End(xlUp).Row
End Sub

Dies Makro ermittelt die unterste nichtleere Zelle in der Spalte A (Spalte
1) für andere Spalten mußt Du "Cells(65536,1)" anpassen indem Du die "1"
durch die entsprechende Spaltennummer ersetzt. Achtung falls Du Excel 5
verwendest mußt Du 65536 durch 16384 ersetzten (letzte mögliche
Zeilennummer).

--
mfg

Eckard Schwarz

Martin Koerner <martin....@mediaways.net> schrieb in im Newsbeitrag:

0 new messages