Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige