Makro mal langsam / mal schnell
David
ich habe ein (für mich) nicht nachvollziehbares Phänomen:
In einer Tabelle habe ich mir über 5 Schaltflächen eine Art Filter selbstgebastelt, da der Autofilter an der Stelle zu unflexibel war. Funzt normalerweise auch top und recht zügig (unter 1 Sek.). Wenn ich nun allerdings die Seitenansicht wähle, anschließend in die Tabelle zurückgehe und dann die Schaltflächen betätige, dauert das Filtern auf einmal ca. 10 Sekunden. Schließe ich die Tabelle gehts wieder flott, nach Seitenansicht wieder langsam, ohne irgendeine Änderung an der Tabelle.
Andere Tabellen sind nicht offen.
Hat jemand eine Idee, woran das liegen könnte?
Den Code hänge ich mit an, ist zwar wahrscheinlich an sich nicht der schnellste, für die begrenzte Zahl an Zeile sollte die Schleife doch aber ausreichend performant sein.
Danke schonmal und Gruß
David
Option Explicit
Dim ZTRV As Boolean
Dim ZRWK As Boolean
Dim FERT As Boolean
Dim ZPCK As Boolean
Dim HALB As Boolean
Dim ROH As Boolean
Sub GetMoreSpeed(bYesNo As Boolean)
Application.ScreenUpdating = Not (bYesNo)
Application.EnableEvents = Not (bYesNo)
Application.Calculation = IIf(bYesNo, xlCalculationManual, xlCalculationAutomatic)
If Not bYesNo Then Calculate
End Sub
Sub filtern()
Dim i As Double
Dim Typ As String
GetMoreSpeed True
For i = 1 To 480
Select Case Range("S" & i)
Case "ZTRV"
If ZTRV Then Rows(i).Hidden = True Else Rows(i).Hidden = False
Case "ZRWK"
If ZRWK Then Rows(i).Hidden = True Else Rows(i).Hidden = False
Case "FERT"
If FERT Then Rows(i).Hidden = True Else Rows(i).Hidden = False
Case "ZPCK"
If ZPCK Then Rows(i).Hidden = True Else Rows(i).Hidden = False
Case "HALB"
If HALB Then Rows(i).Hidden = True Else Rows(i).Hidden = False
Case "ROH"
If ROH Then Rows(i).Hidden = True Else Rows(i).Hidden = False
End Select
Next
GetMoreSpeed False
End Sub
Private Sub ToggleButton1_Click()
If Range("U1") Then
ZTRV = True
Else
ZTRV = False
End If
Call filtern
End Sub
Private Sub ToggleButton2_Click()
If Range("V1") Then
ZRWK = True
Else
ZRWK = False
End If
Call filtern
End Sub
Private Sub ToggleButton3_Click()
If Range("W1") Then
FERT = True
Else
FERT = False
End If
Call filtern
End Sub
Private Sub ToggleButton4_Click()
If Range("X1") Then
ZPCK = True
Else
ZPCK = False
End If
Call filtern
End Sub
Private Sub ToggleButton5_Click()
If Range("Y1") Then
HALB = True
Else
HALB = False
End If
Call filtern
End Sub
Private Sub ToggleButton6_Click()
If Range("Z1") Then
ROH = True
Else
ROH = False
End If
Call filtern
End Sub