2016-06-08 8 views
0

Ich habe 6 Comboboxen in einem Formular - sie sind in einem Array. Sie heißen cboClient (0) bis cboClient (5). Was ich versuche, hier zu tun ist, bestätigen, dass es ein Wert ist so etwas entlang der Linien vonCombobox-Validierung

if cboclient(0)<>"" and not isnull(cboClient(0)) then 
    'Do this 
End if 

Jeder CBO mit der gleichen Liste von Gegenständen bevölkert wird. Mein Ziel ist es, sicherzustellen, dass der Benutzer nicht die gleiche Auswahl in mehr als 1 cbo treffen kann. Grundsätzlich, wenn sie in cboClient (0) den Punkt 1 wählen, kann dieser Gegenstand in keiner anderen cbo ausgewählt werden.

Ich versuche einen Weg zu finden, so dass ich das in so wenigen Zeilen wie möglich machen kann, ich könnte es vielleicht so machen..aber es wäre extrem lang, da ich jedes cbo gegen die anderen verifizieren muss

if cboClient(0).text <> cboClient(1).text then 
    msgbox "OK" 
Else 
    msgbox "Please choose again" 
End if 

Ich versuche, es irgendwie in einer Schleife zu schreiben? um den .text in jeder cbo zu verifizieren und sicherzustellen, dass keine zwei identische Auswahl getroffen wurde. Irgendeine Idee?

EDIT: Ich habe 6 cbo's - jeder wird mit den gleichen Daten bevölkert (sagen Daten Zahlen 1 bis 10). Wenn der Benutzer in cboClient (0) "1" auswählt, kann er dies nicht in einem anderen cbo auswählen. Ich möchte sie nicht unbedingt vor ihnen verstecken, aber sobald sie auf SPEICHERN klicken, möchte ich eine Funktion haben, die CBOs durchlaufen und prüfen, ob sie denselben Gegenstand mehr als einmal ausgewählt haben wollen, dass sie eine MsgBox sagen geben "Fix Ihre Auswahl, können Sie nicht zwei Punkte haben können"

EDIT 2: do zwei Schleifen

Vielleicht - einander innerhalb ...

dim a as integer 
dim b as integer 

for a = 0 to 5 
    for b = 1 to 5 
     if cboClient(a).text <> cboclient(b).text then 
      'keep going 
     else 
      MsgBox "you have made the same selection" 
     End if 
    next b 
next a 

so etwas ?

+1

Der Tag und Titel VB.NET hat eine Lüge sein. In VB.NET gibt es keine Kontrollfelder. Wie auch immer, was ich tun würde, wäre * das * Objekt von allen anderen Comboboxen zu entfernen, sobald es in einem ausgewählt wurde. Auf diese Weise kann der Benutzer sie nicht versehentlich auswählen. Viel freundlichere Benutzeroberfläche als eine Nachrichtenbox. Ja, Sie können eine Schleife verwenden. Es ist nicht klar, was dein tatsächliches Problem ist. –

+0

Ich entschuldige mich für Tag. Ich habe 6 cbo's - jedes wird mit den gleichen Daten bevölkert (sagen wir Daten 1 bis 10). Wenn der Benutzer in cboClient (0) "1" auswählt, kann er dies nicht in einem anderen cbo auswählen. Ich möchte sie nicht unbedingt vor ihnen verstecken, aber sobald sie auf SPEICHERN klicken, möchte ich eine Funktion haben, die CBOs durchlaufen und prüfen, ob sie denselben Gegenstand mehr als einmal ausgewählt haben Ich möchte ihnen eine MsgBox geben, die sagt: "Korrigieren Sie Ihre Auswahl, Sie können nicht zwei Elemente haben" – LD16

+0

Es klingt wie eine Multiselect-Listbox wäre passender – Plutonix

Antwort

1

Versuchen Sie diesen Code:

For i = 0 To 5 
    For j = 0 To 5 
     If i <> j And cboClient(i).Text = cboClient(j).Text Then 
      MsgBox "You must choose diffirent values, Please choose again" 
      Exit Sub 
     End If 
    Next 
Next 
+0

danke! Ich dachte nur das Gleiche - funktioniert gut Ich werde nicht alle Werte durchlaufen, aber MSGBOX das erste Mal, wenn es eine doppelte Auswahl trifft. – LD16

+1

Froh, das zu hören! Ich ändere den Code, um die Nachricht anzuzeigen, wenn sie das erste Mal eine doppelte Auswahl trifft! Danke dir auch :) –