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???
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
Das VBA-Magazin - ein Blick lohnt sich immer: www.vba-magazin.de
"Martin Koerner" <martin....@mediaways.net> schrieb im Newsbeitrag
news:3999527B...@mediaways.net...
Uli
Martin Koerner <martin....@mediaways.net> schrieb in im Newsbeitrag:
Bsp. für Spalte A:
MsgBox Range("A65536").End(xlUp).Address
MfG Ullrich
Hallo Martin,
schau Dich mal um bei
www.joanneum.ac.at/services/vbaexcel
Gruß Heiner aus Herdecke
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
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: