Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1320to1324
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

VBA|UserForm For-Each-Schleife zählt nicht korrekt

VBA|UserForm For-Each-Schleife zählt nicht korrekt
10.07.2013 01:38:15
Mario
Hallo zusammen,
bei folgendem Code zählt meine For-Each Schleife fehlerhaft.
Solange die Tabelle entsprechenden Suchwert beinhaltet, wird auch der richtige Wert angegeben.
Selbst bei einem Eintrag wird auch nur 1 angezeigt.
Wenn die Tabelle aber keinen Eintrag mit diesem Suchwert hat, gibt der Counter immer 1 statt 0 aus.
' Anzahl Firmenrückmeldungen wird in txtFirmenrückmeldungCounter ausgegeben
lngAnzahlReihen = 0
ThisWorkbook.Worksheets("Kundenliste").Activate
ActiveSheet.UsedRange.AutoFilter
ActiveSheet.UsedRange.AutoFilter _
6, "=warte auf Firma"
lngEnde = ActiveSheet.Cells.Find("*", searchdirection:=xlPrevious).Row
For Each lngReihe In ActiveSheet.Range("A2:A" & lngEnde).SpecialCells(xlCellTypeVisible).Rows
lngAnzahlReihen = lngAnzahlReihen + 1
Next
txtFirmenrueckmeldungCounter = lngAnzahlReihen

Ich hänge zur Sicherheit nochmal die Datei an. Der Code befindet sich in ufHome.
Vielen Dank für die Hilfe.
Viele Grüße
Mario
https://www.herber.de/bbs/user/86283.xlsm

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA|UserForm For-Each-Schleife zählt nicht korrekt
10.07.2013 02:40:14
Mustafa
Hallo Mario,
in dieser Zeile wird für lngEnde der Wert 1 ermittelt:
   lngEnde = ActiveSheet.Cells.Find("*", searchdirection:=xlPrevious).Row
Was dann dazu führt das dein Bereich A1:A2 wird in dem du nach sichtbaren Zeilen suchst.
Und da die Zeile 1 nun mal sichtbar ist, gibt dir der Zähler auch eine 1 aus.
Rückmeldung obs hilft wäre nett.
Gruß aus der Domstadt Köln.

AW: VBA|UserForm For-Each-Schleife zählt nicht korrekt
10.07.2013 11:51:12
Mario
Hallo Mustafa,
vielen Dank.
Ich habe es jetzt wie folgt gelösst, auch wenn es mir nicht so recht gefallen will:
ThisWorkbook.Worksheets("Kundenliste").Activate
ActiveSheet.UsedRange.AutoFilter
ActiveSheet.UsedRange.AutoFilter _
6, "=warte auf Firma"
lngEnde = ActiveSheet.Cells.Find("*", searchdirection:=xlPrevious).Row
lngAnzahlReihen = 0
If CLng(lngEnde) = 1 Then
lngAnzahlReihen = 0
Else
For Each lngReihe In ActiveSheet.Range("A2:A" & lngEnde).SpecialCells(xlCellTypeVisible). _
Rows
lngAnzahlReihen = lngAnzahlReihen + 1
Next
End If
txtFirmenrueckmeldungCounter = lngAnzahlReihen

Gibt es da vielleicht auch eine etwas komfortablere Lösung?

Anzeige
AW: VBA|UserForm For-Each-Schleife zählt nicht korrekt
10.07.2013 21:31:13
Jürgen
Hallo Mario,
würdest Du das Ergebnis nicht einfach mit einem ZählenWenn() im Arbeitsblatt erreichen? Ebenso, wenn Du das Ergebnis innerhalb eines Makros benötigst:
Application.WorksheetFunction.CountIf(ThisWorkbook.Worksheets("Kundenliste").UsedRange.Columns(6), "warte auf Firma")
Gruß, Jürgen

AW: VBA|UserForm For-Each-Schleife zählt nicht korrekt
10.07.2013 23:21:16
Mustafa
Hallo Mario,
Jürgens Idee ist da wohl die einfachere Lösung da du sie dann auf alle deine Anfragen umsetzen kannst und so den AutoFilter nicht benötigst, was die Performance des Codes wohl auch erheblich beeinflusst.
In etwa so wäre die Umsetzung :

' Anzahl Firmenrückmeldungen wird in txtFirmenrückmeldungCounter ausgegeben
txtFirmenrueckmeldungCounter = Application.WorksheetFunction.CountIf(ThisWorkbook.Worksheets(" _
Kundenliste").UsedRange.Columns(6), "warte auf Firma")
' Anzahl Kundenrückmeldungen
txtKDRuemeldungCounter = Application.WorksheetFunction.CountIf(ThisWorkbook.Worksheets(" _
Kundenliste").UsedRange.Columns(6), "warte auf Kunden")
' Anzahl Kulanzanfragen
txtKulanzCounter = Application.WorksheetFunction.CountIf(ThisWorkbook.Worksheets("Kundenliste"). _
UsedRange.Columns(6), "Kulanzanfrage")
' Anzahl in Bearbeitung
txtInBearbeitungCounter = Application.WorksheetFunction.CountIf(ThisWorkbook.Worksheets(" _
Kundenliste").UsedRange.Columns(6), "in Bearbeitung")
Und der Code wird auch erheblich kürzer durch diese Vorgehensweise.
Rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.

Anzeige
AW: VBA|UserForm For-Each-Schleife zählt nicht korrekt
11.07.2013 01:21:35
Mario
Hallo Ihr zwei.
@ Jürgen: Sehr guter Tipp. Das bringt deutlich mehr Lesbarkeit und wahrscheinlich auch Performance.
@ Mustafa: Danke Dir, das ich nur noch Copy Paste machen musste. ;) Das hat wunderbar geklappt.

Danke für die Rückmeldung orT
11.07.2013 02:37:25
Mustafa
Gruß aus der Domstadt Köln.

334 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige