Textboxen(UF) auf doppelte und leere Werte prüfen
#1
Hallo zusammen
Mit unterem Code überprüfe ich die Textboxen in einer Userform auf doppelte und leere Einträge. Das funktioniert auch ganz gut. Nur habe ich 2 Probleme damit (für das bin ich auch zu bescheuert)
1. es wird nur eine Fundstelle markiert. Ich will aber dass alle Fundstellen markiert werden 
2. es poppt die MsgBox solange auf, bis keine doppelten mehr gefunden werden. Die MsgBox sollte aber nur EINMAL aufpoppen

Vielleicht kann mir jemand helfen.
(es geht nicht um 10 sondern um viel mehr Textboxen. Ich habe es zur Vereinfachung verkürzt)
LG
Michael
PHP-Code:
Private Sub CommandButton1_Click()
For 
1 To 10
For 1 To 10
If <> j Then
If Controls("TextBox" i) = Controls("TextBox" jThen
Controls
("TextBox" i).BackColor vbYellow
Controls
("TextBox" j).BackColor vbYellow
blnDoppel 
True
Else
Controls("TextBox" i).BackColor vbWhite
End 
If
End If
Next
Next
MsgBox 
"Doppelte bzw leere Einträge"16"Hinweis"
If blnDoppel Then Exit Sub
End Sub 
Antworten Top
#2
Hi,

das erste Problem dürfte am "Else" liegen. Die Textbox wird erst eingefärbt und dann im nächsten Step wieder weiß, weil dann die Inhalte der Textboxen unterschiedlich sind.
Packe an den Anfang noch eine Schleife, in der Du erstmal alle Textboxenhintergründe weiß machst und lass die Else-Bedingung weg.

blnDoppel scheint mir auch überflüssig zu sein.

Die Msgbox sollte IMHO nur einmal am Ende der Sub aufpoppen. Wieso die mehrfach erscheint, kann ich nicht erkennen.

CU
Oberon
Antworten Top
#3
Hallo,

dass die Msgbox mehrfach aufploppt kann eigentlich nicht sein, da die box außerhalb der Schleifen aufgerufen wird.

Allerdings darfst Du die Farbe nicht wieder auf weiß stellen, da du ja jede Textbox mit allen anderen Textboxen vergleichst. Wenn also ein Duplikat gefunden wurde ist sie gelb. Wenn aber danach wieder ein Vergleich mit der gleichen Textbox stattfindet wird sie wieder weiß.

Außerdem prüfst Du manche Einträge doppelt. Z. B. wenn i = 1 und j = 2 und dann wenn i = 2 und j = 1.

Schau mal, ob es so besser funktioniert:
Code:
Private Sub CommandButton1_Click()
    For i = 1 To 10
        Controls("TextBox" & i).BackColor = vbWhite
        For j = i + 1 To 10
            If i <> j Then
                If Controls("TextBox" & i) = Controls("TextBox" & j) Then
                    Controls("TextBox" & i).BackColor = vbYellow
                    Controls("TextBox" & j).BackColor = vbYellow
                    blnDoppel = True
                End If
            End If
        Next
    Next
    If blnDoppel Then MsgBox "Doppelte bzw leere Einträge", 16, "Hinweis"
End Sub
Gruß
Michael
Antworten Top
#4
Hi zusammen

Danke für eure Hilfe
Ihr seid die Besten

LG
Michael
Antworten Top


Gehe zu:


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