2 Tabellen bein´m filtern einbeziehen

josef24

Erfahrenes Mitglied
Eine mehr allgemeine Frage zum Thema. Die Datei die hier bearbeitet werden soll hat ca. 250 Zeilen in 8 Spalten. Ich starte und der Rechner beginnt zu arbeiten. Die "Arbeit" zieht sich nun schon 2 Stunden hin, wobei die zu befüllende Tabelle geöffnet und mit einem Anteil von Daten bereits befüllt ist. Die Datei kann man nicht bewegen (scrollen). Der kreisende Punkt ist immer noch aktiv, man kann nicht eingreifen. Ganz oben steht der Dateiname und (Keine Rückmeldung). Was kann / muss ich bitte unternehmen um dies abzustellen. Danke für Infos und Gruß, Josef
 

Yaslaw

alter Rempler
Moderator
Wird wohl ein Problem in der nichtveröffenltichen Anpassung deines Codes sein.
Ich schätze Zeile 13.

Ansonsten. Wenn du eine Schleife abarbeitest zwischendurch mal ein DoEvents absetzen, damit Excel auf Eingaben reagieren kann.
Aber nicht bei jedem durchlauf, sonst geht die Geschwindigkeit noch weiter Bachab.

Anhand des Fehlerbeschrieb klingt es, als ob die eine Endlosschleife hast. Aber wie gesagt Ohne dein Code kann man dir da nicht helfen
 

josef24

Erfahrenes Mitglied
Hier mal mein Code zum anschauen. Danke bisher
Die folgende Zeile mit den or Funktionen scheinen das ganze zu verlangsamen?

If arr(i, 6) Like "*A*" Or arr(i, 7) Like "*a*" Or (arr(i, 8) >= 1 And arr(i, 8) <= 90) Then



Code:
Sub test_neu()
Dim a As Long, i As Long
Dim arr As Variant
Dim Header As Boolean

Application.ScreenUpdating = False
a = 1
a = Worksheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row + 1

With Worksheets("Tabelle1")
    arr = .Range("A1").CurrentRegion
  
    For i = LBound(arr) + Abs(Header) To UBound(arr)
        If arr(i, 6) Like "*A*" Or arr(i, 7) Like "*a*" Or (arr(i, 8) >= 1 And arr(i, 8) <= 90) Then
            .Rows(i).Copy _
                Destination:=Worksheets("Tabelle2").Rows(a)
            a = a + 1
        End If
    Next i
End With

Application.ScreenUpdating = True
End Sub
 
Zuletzt bearbeitet:

Yaslaw

alter Rempler
Moderator
Hm. Ich sehe gerade keinen Fehler.
Prüfe mal arr, wie gross das wirklich ist. Wenn du leere Zeilen am Ende hast, kann es sein, dass du nicht 250 Zeilen prüfst sondern 65'000.

Visual Basic:
Debug.Print arr.Address
 

josef24

Erfahrenes Mitglied
Vielen Dank für deine Geduld. Wo füge ich bitte die Frage " Debug.Print arr.Address" ein?
Wäre für mich sehr wichtig um vielleicht dem "Fehler" näher zu kommen. Gruß Josef
 

Yaslaw

alter Rempler
Moderator
Nicht vergessen, das Direktfenster einzublenden um das Resultat zu sehen
Alternativ zum Debug.Print kannst du auch mit einer MsgBox arbeiten um das Resultat als PopUp zu bekommen
Visual Basic:
With Worksheets("Tabelle1")
    arr = .Range("A1").CurrentRegion
    Debug.Print arr.Address
 

josef24

Erfahrenes Mitglied
Danke, ich geb's auf. Habe zu wenig Kenntnis um hier zu folgen. Versuche mit Spalten kopieren und bedingter Formatierung hin zu kommen, damit ich mich nur in einer Spalte mit der Suche befassen muss. Denke damit die Arbeitszeit entsprechend ein zu grenzen. Gruß Josef
 

Yaslaw

alter Rempler
Moderator
Sorry, aber Debug.Print gehört zur ersten Lektion in VBA. das ist sehr hilfreich beim Fehler finden.
Wo du das einfügen musst habe ich geschrieben.
Wo ist das Problem?
 

josef24

Erfahrenes Mitglied
Habe den Codeschnipsel 3. .. in der Zeile nach " arr = .Rage in der nächste Zeile eingefügt. Dann kommt Fehler "Laufzeitfehler 424 Objekt erforderlich".

Außer einer Kurzeinweisung und einem VBA Buch habe ich keine Vorkenntnis. Lediglich Vorstellungen wie es in der Praxis uns unterstützen könnte. Gruß Josef