AW: Select Case
03.01.2020 11:22:08
Barbara
Hallo Franz,
diese Möglichkeit bietet Select Case NICHT.
Die erste zutreffende Case-Anweisung, und sonst keine, wird durchgeführt.
Das steht auch in der VBA-Hilfe eindeutig so.
Deine Idee kann verwirklicht werden, indem die erste Case-Anweisung beide Bedingugen mit AND verknüpft. Man muss dann eben x und y an ZWEI Stellen notieren. Das darf man nicht vergessen, wenn dann mal x oder y geändert werden sollen.
Deshalb habe ich zwei If-Schleifen (und nicht eine if-then-else-Schleife, wie von Dir zitiert!) vorgeschlagen. Da kommt x und y nur EINmal vor.
Die beiden Methoden können in den Sub "Auswahl" und "WennDann" betrachtet werden.
Starte dazu die Sub "Beispiel". Am besten Schrittweise.
Und hier das Beispiel. TATÄÄÄÄÄÄÄ!
Sub Beispiel()
Dim a, b, c, d, Wert
Wert = 7
'Mehrere Anweisungen in eine Zeile werden durch Doppelpunkt getrennt
'x und y kommen zur Anwendung
a = 3: b = 4: c = 1: d = 6
Auswahl Wert, a, b, c, d
WennDann Wert, a, b, c, d
'y wird durchgeführt
a = 147: b = 300: c = 0: d = 7
Auswahl Wert, a, b, c, d
WennDann Wert, a, b, c, d
'Hier wird mangels Voraussetzung nix passieren
a = 147: b = 300: c = 1000: d = 2
Auswahl Wert, a, b, c, d
WennDann Wert, a, b, c, d
End Sub
Sub Auswahl(Vergleichszahl, Zahl1, Zahl2, Zahl3, Zahl4)
Select Case Vergleichszahl
'Nur eine und sonst keine Sache wird durchgeführt.
Case Zahl1 + Zahl2 And Zahl3 + Zahl4
MsgBox "Fall x ist eingetreten"
MsgBox "Fall y ist eingetreten"
Case Zahl1 + Zahl2
MsgBox "Fall x ist eingetreten"
Case Zahl3 + Zahl4
MsgBox "Fall y ist eingetreten"
End Select
End Sub
Sub WennDann(Vergleichszahl, Zahl1, Zahl2, Zahl3, Zahl4)
If Vergleichszahl = Zahl1 + Zahl2 Then
MsgBox "Fall x ist eingetreten."
End If
If Vergleichszahl = Zahl3 + Zahl4 Then
MsgBox "Fall y ist eingetreten."
End If
End Sub
LGB