Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
432to436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
432to436
432to436
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA - Anzahl gefilterte DS in Variable holen

VBA - Anzahl gefilterte DS in Variable holen
01.06.2004 15:14:18
Eberhard
Ich versuche die Anzahl DS, die online nach der Aktivierung des Autofilters unten links in der Statuszeile erscheint, in eine Variable (und später in eine Zelle) zu holen.
Kann mir jemand "auf die Sprünge" helfen?
P.S. Im Datenblatt selbst erhalte ich das Ergebnis für die leeren Zellen der Spalte 2 z.B. mit =ZÄHLENWENN(B2:B95;"")

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Anzahl gefilterte DS in Variable holen
PeterW
Hallo Eberhard,
versuch es mal mit Teilergebnis bzw. in VBA Subtotal.
Gruß
Peter
AW: VBA - Anzahl gefilterte DS in Variable holen
01.06.2004 19:50:59
Philipp
Hallo Eberhard
Ich ermittle jeweils die Datensätze durch Zählen der Areas-Zeilen, was mit einer For-Each-Schleife erledigt wird. Das ist m.E. am einfachsten, da die Grösse des Datenbereiches nicht bekannt sein muss und auch auf leere Zellen nicht geachtet werden muss. Bei einer Formellösung wie =TEILERGEBNIS(3;B2:B95) muss man den Zellbereich angeben (und dieser kann sich ja ändern, z.B. durch Hinzufügen oder Löschen von Zeilen). Zudem muss man sich in der Formel auf eine bestimmte Spalte festlegen. Sobald jedoch in der Spalte leere Zellen vorkommen, liefert TEILERGEBNIS ein falsches Resultat, weil nur nicht-leere Zellen gezählt werden.
Der Nachteil meiner Lösung (bzw. einer VBA-Lösung ganz allgemein) ist halt, dass die Makroausführung angestossen werden muss - durch Klick auf einen Button oder wie auch immer. Das Makro kann leider nicht als benutzerdefinierte Excelfunktion verpackt werden, weil dann CurrentRegion und SpecialCells(xlVisible) nicht mehr korrekt funktionieren.

Sub CountRows()
Dim rngArea As Range
Dim lngRowCount As Long
For Each rngArea In ActiveSheet.Range("A1").CurrentRegion. _
SpecialCells(xlVisible).Areas
lngRowCount = lngRowCount + rngArea.Rows.Count
Next
MsgBox "Gefundene Datensätze: " & lngRowCount - 1
End Sub

PS: Falls die Datenliste nicht in Zelle A1 beginnt, muss die Zelladresse bei 'Range("A1")' entsprechend angepasst werden.
Gruss
Philipp von Wartburg
Anzeige
AW: VBA - Anzahl gefilterte DS in Variable holen
02.06.2004 09:22:46
Eberhard
Hallo Philipp,
vielen Dank für diese ausführlichen Ausführungen!!! Ich bin sicher, dass dies ein ganz genialer Ansatz ist, diesen (und viele ähnlich gelagerten Fälle) elegant zu lösen.
An die "SpecialCells(xlVisible)" habe ich gestern abend auch noch oft gedacht, kam aber nicht dazu, diesen Ansatz zu verfolgen...
Die Geschichte mit den ...Areas habe ich noch nicht ganz verstanden - aber das kommt wohl erst nach dem 5. mal lesen und v.a. beim Probieren. - Ich hätte gedacht, dass man sich jede Zeile in der For Each-Schleife anschaut und dann den Zähler - wenn sichtbar - um eins hochzählt. Ich werde den Ansatz heute vormittag noch testen - vielen Dank nochmal !!!
Anzeige
AW: VBA - Anzahl gefilterte DS in Variable holen
03.06.2004 08:00:03
Eberhard
Hallo Philipp,
bin erst abends zum Probieren gekommen - es hat auf Anhieb geklappt! - Suuuuper -
Ich hab mir die "SpecialCells(xlVisible).Areas" mit Hilfe von .select mal im Einzelschritt angeschaut und dabei visuell bestätigt bekommen (und kapiert), dass der Ansatz genial ist!!!
Hab viel dazugelernt - nochmals vielen Dank!

74 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige