2016-07-26 6 views
0

일부 필드가 필요한 곳에 userform을 만들었습니다. 그들의 이름은 쉽게 식별 할 수 있도록 "R"로 끝납니다. 그러나 부울 필드에 의해 플래그가 지정된 빈 필드 수를 계산하는 방법을 이해할 수 없습니다. "True"플래그의 수가 0보다 큰 경우 오류 메시지를 표시하려고합니다.부울 연산자 계산

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

당신은 trues의 수를 계산 할 필요가 없습니다. 어떤 ctl.Value = ""이라면 메시지 박스를 던져서 서브를 빠져 나옵니다. 하나가 비어 있으면 확인을 완료 할 수 있습니다. – sous2817

+0

@ sous2817 - 그게 가난한 UX입니다 - 사용자 관점에서 볼 때 검증 오류의 모든 것을 동시에 아는 것이 훨씬 쉽습니다. – Comintern

+0

@Comintern 물론 필요한 필드가 완성 될 때까지 사용자가 양식을 제출하지 못하게하는 것이 더 좋지 않습니까? 이 고양이를 껍질을 벗기는 여러 가지 방법들 중 하나를 선택했습니다. – sous2817

답변

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

나는 또 다른 If Then 대신 and와 statement를 사용했다. 그리고 나서 그것은 완벽하게 작동했다 !! 고맙습니다! – EmsBish