2016-07-26 46 views
0

Ich habe ein Benutzerformular erstellt, in dem einige Felder erforderlich sind. Ihr Name endet mit einem "R" für eine einfache Identifizierung. Ich kann jedoch nicht herausfinden, wie man die Anzahl der leeren Felder zählt, die durch die booleschen Felder markiert sind. Wenn die Anzahl der "True" -Flags größer als 0 ist, möchte ich eine Fehlermeldung anzeigen.Anzahl boolescher Operatoren

For Each ctl In NewAsset.Controls 
If Right(ctl.Name, 1) = "R" Then 
    If ctl.Value = "" Then 
     flag = True 
    End If 

    If ctl.Value <> "" Then 
     flag = False 
    End If 
End If 
Next 
+0

Sie brauchen nicht die Anzahl der trues zu zählen. wenn irgendein ctl.Value = "" dann kotze ein Meldungsfeld und verlasse den Sub. Sobald eine leer ist, können Sie die Überprüfung abschließen. – sous2817

+0

@ sous2817 - Das ist ein schlechtes UX - es ist viel einfacher vom Benutzer Standpunkt * alle * Validierungsfehler gleichzeitig zu kennen. – Comintern

+0

@Comintern Sicher, aber wäre es nicht noch besser, den Benutzer das Formular nicht zu senden, bis die erforderlichen Felder abgeschlossen sind? Viele Möglichkeiten, diese Katze zu häuten, gab ich nur eine Option. – sous2817

Antwort

0
Dim n As Long 
For Each ctl In NewAsset.Controls 
    If Right(ctl.Name, 1) = "R" And ctl.Value = "" Then 
     n = n + 1 
    End If 
Next 
If n > 0 Then MsgBox n & " required fields are not filled!" 
+0

Ich habe ein anderes If Then anstelle der und Anweisung verwendet und dann hat es perfekt funktioniert !! Vielen Dank! – EmsBish