Ich möchte diese Lampe dann auf Grün umspringen lassen, wenn von z.B. Zehn Feldern 7 Wichtige ausgefüllt sind.
Also muss ich irgendwie eine „Und“ Verknüpfung machen.
Wenn = Feld 1 und 2 und 3 und 4 und 7 und 8 und 9 ausgefüllt wurden dann = Lampe von Rot auf Grün.
Das mit der Lampe ist kein Problem, aber in dem Change Event geht die Verknüfung ja nicht.
Und, … die Abfrage muss auch laufen wenn jemand zuerst bei Feld 10 anfängt auszufüllen oder gar welche nicht ausfüllt.
Ich hoffe es ist noch zu verstehen was ich meine.
bis dann
Udo
Im Change Event oder im LostFocus Event der Textfelder,
richtigkeit überprüfen und Ampel dementsprechend anzeigen.
ich hoffe ich habe dich nun richtig verstanden: hier meine lösung
Private Sub Ampelcheck()
Dim farbe As Long
farbe = vbGreen
If Trim(TextBox1.Text) = „“ Then
farbe = vbRed
End If
If Trim(TextBox2.Text) = „“ Then
farbe = vbRed
End If
If Trim(TextBox3.Text) = „“ Then
farbe = vbRed
End If
If Trim(TextBox4.Text) = „“ Then
farbe = vbRed
End If
If Trim(TextBox7.Text) = „“ Then
farbe = vbRed
End If
If Trim(TextBox8.Text) = „“ Then
farbe = vbRed
End If
If Trim(TextBox8.Text) = „“ Then
farbe = vbRed
End If
meineampel.Color = farbe
End Sub
Private Sub TextBox1_Change()
Call Ampelcheck
End Sub
Private Sub TextBox2_Change()
Call Ampelcheck
End Sub
Private Sub TextBox3_change()
Call Ampelcheck
End Sub
Private Sub TextBox_USW_change()
Call Ampelcheck
End Sub
Private Sub Form\_Load ()
Set Picture1.Picture=LoadPicture (App.Path & "\red.bmp")
End Sub
'
' Ganauso auch für alle anderen Textfelder:
Private Sub txtFeld1\_LostFocus ()
If alleFelderVollstaendig Then
Set Picture1.Picture=LoadPicture (App.Path & "\green.bmp")
Else
Set Picture1.Picture=LoadPicture (App.Path & "\red.bmp")
End If
End Sub
'
'
Private Function alleFelderVollstaendig () As Boolean
Dim benoetigteFelder () As Variant, c As Control, i As Integer
'Erstelle Liste mit den Namen der benoetigten Felder (Text oder Comboboxen)
benoetigteFelder = Array ("txtFeld1", "txtFeld2", "txtFeld7")
For i = 0 To Ubound (benoetigteFelder)
For Each c in Me.Controls
If c.Name = benoetigteFelder(i) And Trim(c.Text) = "" Then Exit Function
Next
Next
alleFelderVollstaendig = True
End Function
Das funktioniert auch dann, wenn ein benötigtes Feld ausgeüllt war und wieder gelöscht wird (wird wieder rot).