Wie kann man eine If schleife mit meheren bedingungen erstellen?
Hallo user,
ich habe ein kleines problem mit einer if schleife die 2 bedingungen Prüfen soll.
If TextBox1.Text = "2" And TextBox2.Text = "2" Then CommandButton3.Visible = False Else: CommandButton3.Visible = True End If
Leider funktioniert das ganze nicht so wie ich will. Ich hoffe es kann mir jemand weiter helfen.
4 Antworten
schau mal im Direktfenster, was
debug.print "1:" & "_" & Textbox1.Text & "2:" & Textbox2.Text
liefert (da darf kein Leerzeichen auftauchen! Nimm Schrift Courier oder eine andere äquidistante Schrift, bevorzuge ich für den Editor generell!) Oder
len(Textbox1.Text)
oder verwende
if instr("2", Textbox1.Text), 1) > 0 And instr(....) > 0
ist da i'wo ein Leerzeichen drin? Oder heisst es zB
Activeworkbook.drawingObjects.Textbox1
? Du kannst aber anstatt AND auch 2 Schleifen ineinander setzen und nach der ersten Schleife was mit debug.print testen und in der 2. schleife wieder, zur genaueren Lokalisierung des Fehlers.
Mehr fällt mir für einen Fehlertest momentan auch nicht ein.
(If leitet einen Block ein, keine Schleife - hier wird nichts wiederholt)
Syntaktisch ist alles in Ordnung, also dürfte der Fehler in der Semantik liegen.
Was willst du denn haben? Ich vermute mal:
Wenn in TextBox1 "2" steht, dann CommandButton3 ausblenden
und
Wenn in TextBox2 "2" steht, dann CommandButton3 ausblenden
Ansonsten CommandButton3 einblenden
Berücksichtige bitte, dass die Umgangssprache sehr locker mit den Begriffen "und" und "oder" umgeht, während diese Wörter als Operatoren eine genau festgelegte Bedeutung haben. Die Verwirrung hier dürfte daher kommen, dass die Umgangssprache viele "Ellipsen" ("Auslassungen") verwendet. Deshalb meine oben dargestellte Vermutung.
Syntaktisch kann ich keinen Fehler erkennen, aber du könntest das ein bisschen optimieren
CommandButton3.Visible = Not (TextBox1.Text = "2" And TextBox2.Text = "2")
Für eine Fehleranalyse bräuchte ich die Beschreibung des Soll- und Istzustands.
Ich habe das jetzt mal so nachgebaut und bei mir funktioniert es tadellos.
Bist Du sicher, dass in den TB wirklich nur 2 steht?
Wie genau funktioniert es denn nicht?
Gehe den Code mal mit F8 Step by Step durch.
WO siehst Du den Fehler?