Anzeige
Archiv - Navigation
1240to1244
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
Inhaltsverzeichnis

Problem beim Auswählen von Datensätzen

Problem beim Auswählen von Datensätzen
Datensätzen
Hallo Excel-Profis,
ich rufe mit einem Makro aus einer Liste Rechnungsdatensätze ab:
Selection.AutoFilter Field:=20, Criteria1:=Rechnungsnr
Selection.AutoFilter Field:=21, Criteria1:="nein"
If ActiveSheet.AutoFilter.Range.Offset(1, 0).SpecialCells(xlCellTypeVisible).Rows.Count kleiner 2 Then
ActiveSheet.ShowAllData
Sheets("Eingabe").Select
Range("f2").Select
MsgBox ("Keine offenen Positionen!")
Das klappt auch wunderbar wenn die Rechnung mehr als eine Position hat. (Dann macht er weiter und bringt die Datensätze)
Wenn ich keine Position habe sagt er eben "Keine offenen Positionen!"
Wenn ich aber nur einen Datensatz habe, bringt er mir auch "Keine offenen Positionen!"
Ich habe schon statt kleiner 2 alles mögliche versucht, finde aber keine Lösung.
Weiß jemand einen Rat?
Vielen Dank und viele Grüße Lutz

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

Betreff
Benutzer
Anzeige
Alternative : TEILERGEBNIS(3;....)
08.12.2011 22:19:15
NoNet
Hallo Lutz,
probier mal folgende Alternative :

If Application.Subtotal(3,ActiveSheet.AutoFilter.Range.Columns(20))<2 Then

Das entspricht der Tabellenblattfunktion =TEILERGEBNIS(3;[Autofilterbereich Spalte 20])

Gruß, NoNet
AW: Alternative : TEILERGEBNIS(3;....)
08.12.2011 22:27:09
lutz
Hallo Nonet,
vielen Dank, ich hatte eben gerade das hier im Forum doch noch gefunden:
If WorksheetFunction.Subtotal(3, Range("G2:G65536")) = 0 Then
D.h. wenn es 0 ist soll er aussteigen. Das funktioniert auch.
Ist das von Dir ein besserer/performanterer Ansatz?
Wenn ich das richtig verstehe, zählen die doch die Summe - oder was mach Subtotal(3?
Vielen Dank und viele Grüße Lutz
Anzeige
TEILERGEBNIS(3;....) = ANZAHL2()
08.12.2011 22:58:08
NoNet
Hallo Lutz,
Range("G2:G65536") beschränkt sich auf den Bereich Zeile 2:65536 - typisch für Excel-Versionen bis 2003 (und meist ausreichend) - aber ungeeignet für Versionen ab Excel 2007 und auch fehleranfällig falls Daten unterhalb der gefilterten Liste stehen (was ich nicht empfehlen würde, aber in der Praxis leider häufig vorkommt).
Mit meiner Variante wird nur der tatsächliche Autofilter-Bereich berücksichtigt - mehr soll und darf auch nicht berücksichtigt werden, daher ist diese Variante zu empfehlen !
Application.Subtotal(3,...) (bzw.: TEILERGEBNIS(3;...)) verwendet die Unterfunktion ANZAHL2() (also: ALLE Zellen mit INHALT - Text oder Zahl - ZÄHLEN !) - es wird also nicht SUMMIERT, sondern GEZÄHLT !!
Gruß, NoNet
Anzeige
AW: TEILERGEBNIS(3;....) = ANZAHL2()
08.12.2011 23:14:24
lutz
Hallo NoNet,
herzlichen Dank für die wirklich keine Fragen mehr offen lassende Erklärung!
Ich werde das auf Deine Variante ändern - und vor allem ist mir jetzt auch die Funktionsweise klar.
Vielen lieben Dank und viele Grüße Lutz

182 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige