Das IIF funktioniert nicht, da ich noch andere code in der If
bedingunen verarbeiten muss. Das habe ich aussgelassen, weil
ich mich aufs nötigste beschränkt habe.
Auch habe ich Bauschmerzen gegen das IIF wie Markus.
Das If steht auch in einer Schleife und wird mehrmals
abgefragt.
daher die NULL setztung.
Hallo Winter,
der Feedback bezog sich auf das was du geschrieben hast.
Hättest du die anderen Bedingungen genannt wären die Antworten ggfs.
anderst ausgefallen.
Zeig mal wenn du magst ein lauffähigen Code dazu.
Grundsätzlich/erstmal schreibe ich sowas nach Bauchgefühl.
Hier ging es ja nur um „“ oder „abcd“.
Da hätte ich auch eine deiner Varianten oder IIF genommen.
IIF macht mir keine Bauchschmerzen.
Sind aber mehr Bedingungen abzuarbeiten kommen auch andere Funktionen
ins Spiel, z:B. Select Case
Gelegentlich bastle ich Code der extrem schnell sein muß, bei
Stochastik, Kombinationen u.ä., dann ist die Schnelligkeit oberstes
Ziel.
Bei Interesse, schau dir mal bitte den untenstehenden Code an.
PS: Wie ich immer sage, in Foren lernt man am meisten.
Ohne deine Anfrage wäre ich nicht zufällig über „Switch“
gestolpert, kannte ich bis gestern nich.
Gruß
Reinhard
Option Explicit
Public btest As Boolean, strTest As String
Sub Test()
Dim T As Single, N As Long, dummy
Columns("B:C").NumberFormat = "0.000"
Const Anz As Long = 3000000
Range("A1").Value = "u1"
btest = True
T = Timer
For N = 1 To Anz
dummy = u1()
Next N
Range("B1").Value = Timer - T
btest = False
T = Timer
For N = 1 To Anz
dummy = u1()
Next N
Range("C1").Value = Timer - T
Range("A2").Value = "u2"
btest = True
T = Timer
For N = 1 To Anz
dummy = u2()
Next N
Range("B2").Value = Timer - T
btest = False
T = Timer
For N = 1 To Anz
dummy = u2()
Next N
Range("C2").Value = Timer - T
Range("A3").Value = "u3"
btest = True
T = Timer
For N = 1 To Anz
dummy = u3()
Next N
Range("B3").Value = Timer - T
btest = False
T = Timer
For N = 1 To Anz
dummy = u3()
Next N
Range("C3").Value = Timer - T
Range("A4").Value = "u4"
btest = True
T = Timer
For N = 1 To Anz
dummy = u4()
Next N
Range("B4").Value = Timer - T
btest = False
T = Timer
For N = 1 To Anz
dummy = u4()
Next N
Range("C4").Value = Timer - T
Range("A5").Value = "u5"
btest = True
T = Timer
For N = 1 To Anz
dummy = u5()
Next N
Range("B5").Value = Timer - T
btest = False
T = Timer
For N = 1 To Anz
dummy = u5()
Next N
Range("C5").Value = Timer - T
Range("A6").Value = "u6"
btest = True
T = Timer
For N = 1 To Anz
dummy = u6()
Next N
Range("B6").Value = Timer - T
btest = False
T = Timer
For N = 1 To Anz
dummy = u6()
Next N
Range("C6").Value = Timer - T
Range("A7").Value = "u7"
btest = True
T = Timer
For N = 1 To Anz
dummy = u7()
Next N
Range("B7").Value = Timer - T
btest = False
T = Timer
For N = 1 To Anz
dummy = u7()
Next N
Range("C7").Value = Timer - T
End Sub
Function u1()
If btest Then
strTest = "abcd"
Else
strTest = ""
End If
u1 = strTest
End Function
Function u2()
strTest = ""
If btest Then strTest = "abcd"
u2 = strTest
End Function
Function u3()
strTest = Left("abcd", (btest = True) \* -4)
u3 = strTest
End Function
Function u4()
strTest = IIf(btest, "abcd", "")
u4 = strTest
End Function
Function u5()
strTest = Switch(btest = True, "abcd", btest = False, "")
u5 = strTest
End Function
Function u6()
strTest = Application.Choose(1 + (btest = True) \* -1, "", "abcd")
u6 = strTest
End Function
Function u7()
Select Case btest
Case True
strTest = "abcd"
Case False
strTest = ""
End Select
u7 = strTest
End Function