Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[VBA] If-Abfrage mit mehreren or Bedingungen verschlanken
#1
Wunderschönes Wochenende wünsche ich :)...

ich benötige mal eure Hilfe: Ich habe eine If-Abfrage, die eine Zellwert abfragt. Nun können allerdings mehrere Bedingungen die Abfrage auf true setzen. Mein bisheriger Ansatz sprengt mittlerweile den Rahmen und das ist schlecht lesbar und irgendwie auch unschön. Hat wer einen Tipp, wie ich das verschlanken kann? Zumal da in Zukunft möglicherweise noch mehr Bedingungen hinzukommen können.

Code:
            For i = 1 To tipp.Cells.Count - 4
                If LCase(tipp.Cells(i).Offset(0, 1)) = "x" Or LCase(tipp.Cells(i).Offset(0, 1)) = "k" _
                Or LCase(tipp.Cells(i).Offset(0, 1)) = "p" _
                Or LCase(tipp.Cells(i).Offset(0, 1)) = "gni" Or LCase(tipp.Cells(i).Offset(0, 1)) = "r" _
                Or LCase(tipp.Cells(i).Offset(0, 1)) = "t1" Or LCase(tipp.Cells(i).Offset(0, 1)) = "t2" _
                Or LCase(tipp.Cells(i).Offset(0, 1)) = "t3" Then
                arr(i) = tipp.Cells(i).Value
                End If
            Next i

Ach und vielleicht ein wenig offtopic:
Wieso funktioniert  LCase(tipp.Cells(i).Offset(0, 1)) = "t*" für "t1", "t2","t3" etc nicht? 

Danke und Gruß
Antworten Top
#2
Code:
Select case Lcase(…)
   case "p", "x", …
      Tuwas
End Select

(06.05.2023, 11:17)EasY schrieb: Wieso funktioniert  LCase(tipp.Cells(i).Offset(0, 1)) = "t*" für "t1", "t2","t3" etc nicht? 
Der =-Operator beherrscht keine Mustersuche. Einfache Mustersuchen kannst du z.B. mit Like umsetzen..
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
[-] Folgende(r) 1 Nutzer sagt Danke an EarlFred für diesen Beitrag:
  • EasY
Antworten Top
#3
Nur ergänzend!
Ich bekomme bei Select Case "p", "x", "k", "gni" … immer Krämpfe in die Finger! Wink

"Schonender" ist dies:
Code:
Dim Cases, Fund
Cases = Split("x k p gni r t1 t2 t3")
Fund = Application.Match("k", Cases, 0)
If IsNumeric(Fund) Then MsgBox "Einer war dabei!"

Wichtig, dass sowohl Cases als auch Fund hier Variant sind!
   
Ein Variant kann nämlich auch einen Fehlerwert aufnehmen, der auftritt, wenn Application.Match nichts findet.
Ich schreibe das, weil man so keine Fehlerbehandlung braucht.
(OK, war'n Insider)
Wink

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • EasY
Antworten Top
#4
(06.05.2023, 11:45)RPP63 schrieb: Nur ergänzend!
Ich bekomme bei Select Case "p", "x", "k", "gni" … immer Krämpfe in die Finger! Wink

"Schonender" ist dies:
Gutes Fingertraining!
Warum verballerst du so viele Variable? 
If Isnumeric(Application.Match("Test", Split(….), 0)) Then…

Ich kriege übrigens immer Krämpfe in den Augen bei leerzeichengetrennten Splits… Wink 

Bin auf Krawall gebürstet heute, ich weiß…
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#5
(06.05.2023, 12:02)EarlFred schrieb: Warum verballerst du so viele Variable?

Ich habe den Wink mit dem Zaunpfahl verstanden!
Aber: Wie sonst hätte ich einen so hübschen Screenshot zur Verdeutlichung der Arbeitsweise anfügen können?
Zitat:Bin auf Krawall gebürstet heute

Heute?  19
Mal davon ab:
Diese Form von Krawall gefällt mir!
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
(06.05.2023, 12:07)RPP63 schrieb: Wink mit dem Zaunpfahl

Heute?
Wink? Ich habe damit zugeschlagen! Big Grin 
Heute merke ich es selbst, sonst ignoriert es mein Unterbewusstsein Wink
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#7
Klasse Lösungen - genau so wollte ich es ... DANKE!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste