Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

nur gefilt. Daten in Schleife

Forumthread: nur gefilt. Daten in Schleife

nur gefilt. Daten in Schleife
21.09.2022 20:52:04
Fred
Hallo Excel Experten,
ich arbeite Daten in einer Schleife ab:

Sub schleife_1()
Dim wks_q As Worksheet
Dim wks_import As Worksheet
Dim wks_ausw As Worksheet
Dim lngLastRow As Long
Dim lngC As Long
Dim t As Double ' Zeitmessung
t = Timer
Application.ScreenUpdating = False
Set wks_tp = ThisWorkbook.Sheets("TagesPlan")
Set wks_imp = ThisWorkbook.Sheets("Import")
Set wks_ausw = ThisWorkbook.Sheets("Auswertung")
With wks_tp
lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For lngC = 11 To lngLastRow
wks_imp.Cells(1, 7) = .Cells(lngC, 2).Value
wks_imp.Cells(2, 7) = .Cells(lngC, 6).Value
wks_ausw.Cells(3, 6) = .Cells(lngC, 6).Value
Next lngC
End With
Application.ScreenUpdating = True
MsgBox Timer - t & " sec", , "Makrolaufzeit" ' Zeitmessung
End Sub
Wenn ich nun die Tabelle in Sheet "TagesPlan" filter, wird das von diesem Makro nicht berücksichtigt. - Die Daten in
.Cells(lngC, 2).Value
.Cells(lngC, 6).Value
.Cells(lngC, 6).Value
werden komplett "verarbeitet".
Meine Frage:
Wie ändere ich das Makro, so das nur die gefilterten (sichtbaren) Daten berücksichtigt werden?
Gruss
Fred
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur gefilt. Daten in Schleife
21.09.2022 21:03:54
ralf_b

For lngC = 11 To lngLastRow
if .cells(lngC,"C").rowheight >0 then
'hier passiert was
end if  

AW: nur gefilt. Daten in Schleife
21.09.2022 21:14:08
Fred
Hallo ralf_b,
genau der richtige "Zusatz",- hatte ich mir "umfangreicher" vorgestellt.
Vielen Dank für deine Unterstützung !!
Gruss
Fred
Anzeige
AW: nur gefilt. Daten in Schleife
21.09.2022 21:15:35
Daniel
Hi
gibt da zwei Möglichkeiten
wenn du die Schleife so wie du über Zeilennummern von-bis laufen lässt, musst du, wie von ralf gezeigt, für jede Zeile prüfen, ob sie ein. oder ausgeblendet ist.
ich würde das so machen:

if .rows(lngC).Hidden = false then
andere Möglichkeit, du weist VBA an, die Schleife nur über sichtbaren Zellen laufen zu lassen.
das geht aber nicht mit einfachen Zählschleifen, sondern nur mit einer For-Each-Schleife über die Zellen:

dim Zelle as Range
For each Zelle in .Range(.Cells(11, 1), .Cells(lngLastRow, 1)).SpecialCells(xlcelltypevisible)
wks_imp.Cells(1, 7) = Zelle.Offset(0, 1).Value
wks_imp.Cells(2, 7) = Zelle.Offset(0, 5).Value
wks_ausw.Cells(3, 6) = Zelle.Offset(0, 5).Value
Next
Gruß Daniel

Anzeige
AW: nur gefilt. Daten in Schleife
22.09.2022 10:08:24
Fred
Hallo Excel Experten,
ich habe ein Problem mit dem durchlaufen einer Schleife,- bei gefilterten Daten.
Das Beispiel von Daniel

if .rows(lngC).Hidden = false then
und von ralf_b

 For lngC = 11 To lngLastRow
if .cells(lngC,"C").rowheight >0 then
'hier passiert was
end if 
funzen zwar,- verursachen aber anscheinend bei manchen "(lngC)" einen mehrfachDurchlauf. Setze ich keinen Filter,- läuft es einwandfrei.
Kann ein Experte bitte mal drauf schauen:
https://www.herber.de/bbs/user/155320.xlsb
Vielleicht habe ich im Code auch nur etwas falsch gesetzt ...
Gruss
Fred
Anzeige
AW: nur gefilt. Daten in Schleife
22.09.2022 13:08:01
ralf_b
Das dürfte eine Fehleinschätzung deinerseits sein.
Der zusätzliche Code prüft nur etwas und nimmt keine Änderungen vor.
AW: nur gefilt. Daten in Schleife
22.09.2022 13:15:50
Fred
ralf_b,
naja,- er ändert die weitere Verarbeitung oder nicht Verarbeitung.
Es ist seltsam, das wenn ich die Daten nicht filter, es keine "Doppler" gibt und sobald ich filter,- einiges an "Doppler" produziert wird.
Gruss
Fred
Anzeige
AW: nur gefilt. Daten in Schleife
22.09.2022 13:34:14
Fred
Hallo Ralf_b,
au Backe!
Das "End IF" war falsch gesetzt.
Muss nach den Aufruf der 2 weiteren Makros gesetzt werden!!
Nun: Alles klar!
Gruss
Fred
Danke für die Rückmeldung owt
22.09.2022 13:38:11
ralf_b
AW: nur gefilt. Daten in Schleife
22.09.2022 14:42:32
Luschi
Hallo Fred,

Nun: Alles klar

- leider nicht ganz, denn Du arbeitest unsauber mit den Vba-Objekten:
- Dim wks_import As Worksheet  - aber
  Set wks_imp = ThisWorkbook.Sheets("Import")
- Set wks_tp = ThisWorkbook.Sheets("TagesPlan")
  wobei es kein: Dim wks_tp As Worksheet gibt
- arbeite in jedem Modul mit der Einstellung 'Option Explicit'
  die man im Vba-Editor unter: Extras - Optionen - Register 'Editor' - Variablendeklaration erforderlich
  einstellen kann
Gruß von Luschi
aus klein-Paris

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