Hi Matthias,
..,. die ganze
Aufregung kann ich nicht so recht verstehen.
Dein Code - auf den ich mich bezog - sah so aus:
Sub SwitchEinAus()
Application.ScreenUpdating = False
Dim i As Integer
Dim wert1
Dim wert2
Dim wert3
For i = 1 To Sheets.Count
wert1 = Sheets(i).Name Like "*_FA*"
wert2 = Sheets(i).Name Like "*_FV*"
wert3 = Sheets(i).Name Like "*_FF*"
If wert1 = True Or wert2 = True Or wert3 = True Then
Sheets(i).Visible = Not Sheets(i).Visible
End If
Next i
Application.ScreenUpdating = True
End Sub
Dazu hatte ich angemerkt:
"Warum lässt du wert2 und wert3 für auch dann noch ermitteln, wenn wert1 True ist?
Das verschenkt Zeit."
wert2 und wert3 werden in deinem Code
immer ermittelt - unabhängig von wert1.
Wenn wert1 True ist, brauchen wert2 uind wert3 nicht mehr berechnet zu werden - sie sind egal.
Man könnte das z. B. so schreiben:
Sub SwitchEinAus2()
Dim ii As Integer, blnSwitch As Boolean
Application.ScreenUpdating = False
For ii = 1 To Sheets.Count
If Sheets(ii).Name Like "*_FA*" Then
blnSwitch = True
ElseIf Sheets(ii).Name Like "*_FV*" Then
blnSwitch = True
ElseIf Sheets(ii).Name Like "*_FF*" Then
blnSwitch = True
End If
If blnSwitch Then Sheets(ii).Visible = Not Sheets(ii).Visible
Next ii
Application.ScreenUpdating = True
End Sub
Hier werden die Ausdrücke Sheets(ii).Name Like "*_FV*" und Sheets(ii).Name Like "*_FF*"
nicht mehr ausgewertet, wenn Sheets(ii).Name Like "*_FA*" ist.
Hier wird das noch deutlicher:
Sub SwitchEinAus3()
Dim ii As Integer, blnBleibt As Boolean
For ii = 1 To Sheets.Count
If Not Sheets(ii).Name Like "*_FA*" Then
If Not Sheets(ii).Name Like "*_FV*" Then
If Not Sheets(ii).Name Like "*_FF*" Then blnBleibt = True
End If
End If
If Not blnBleibt Then Sheets(ii).Visible = Not Sheets(ii).Visible
Next ii
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort