Xor vs. If
12.01.2007 22:30:11
Ingo
ich versuche gerade ein paar Tips zur Vermeidung von Schleifen umzusetzen.
Am Nachfolgenden Beispiel habe ich einmal meine
bisherige Variante mit Schleifen
(Abfrage ob ein Datum ein Feiertag ist) verwendet. Dabei wurden bekannte Typ-Unverträglichkeiten ausgeklammert/vermieden.
In der zweiten Variante mit Xor bin ich etwas "brutaler" mit resume next
an die Sache herangegangen.
Verschachtelte If habe ich noch jede Menge. Wäre das Prinzip der 2. Variante
tatsächlich die bessere, schnellere Wahl ?
Über eine Meinung oder Anregung würde ich mich sehr freuen.
Gruß, Ingo
'Überprüfen ob Feiertag
For y = 1 To UBound(Arr_Feiertage, 1)
If Arr_Feiertage(y, 2) = "Ostersonntag" Then
If CDate(.Name) + i_tag - 1 = _
CDate(Ostersonntag(Year(.Name)) + Arr_Feiertage(y, 3)) Then
Feiertag = True
End If
End If
If Arr_Feiertage(y, 2) "Ostersonntag" Then
If CDate(.Name) + i_tag - 1 = _
CDate(Arr_Feiertage(y, 2) & Year(.Name)) Then
Feiertag = True
End If
End If
Next y
2. Variante
For y = 1 To UBound(Arr_Feiertage, 1)
On Error Resume Next
Feiertag = _
CDate(.Name) + i_tag - 1 = _
CDate(Ostersonntag(Year(.Name)) + Arr_Feiertage(y, 3)) Xor _
CDate(.Name) + i_tag - 1 = _
CDate(Arr_Feiertage(y, 2) & Year(.Name))
If Feiertag = True Then Exit For
Next y