2016-09-23 4 views
0

모든 체크 박스가 비어있는 경우 사용자에게 메시지 상자를 경고하는 코드를 작성하려고합니다.모든 체크 박스가 비어있을 때 msgbox

이 코드를 작성하기 위해 하나의 userform에서 모든 확인란 컨트롤을 참조하는 방법에 대한 도움이 필요합니다.

다음은 시도한 코드의 예입니다. 그러나 작동하지 않습니다.

Dim Allcheckbox As Variant 

Allcheckbox = Array("checkbox1", "checkbox2", "checkbox3", "checkbox4", "checkbox5", "checkbox6") 
If Controls(Allcheckbox).Value = False Then 
    MsgBox ("Please select a comparison criteria.") 
End If 

답변

0

도움 주셔서 감사합니다.

아래 코드를 사용하여 해결책을 찾았습니다.

Dim x As Integer 

    x = 0 

    For Each cCont In Me.Controls 
     If TypeName(cCont) = "CheckBox" Then 
      If cCont.Value = True Then 
       x = x + 1 
      End If 
     End If 
    Next 

    If x = 0 Then 
     MsgBox ("Please select a comparison criteria.") 
    End If 
0

나는 배열을 반복하고 확인란의 각 값을 확인합니다. any가 value = true이면 boolean을 true로 설정합니다. 이것은 함수에서 더 좋을 것이고 배열을 전달할 수 있습니다. 그런 다음 true가 전달 되 자마자 Exit Function을 사용할 수 있습니다.

ctrlSelect = False 
For Each ctrl In form.Controls 
    If TypeName(ctrl) = "CheckBox" Then 
     If crtl.value = "True" Then 
      ctrlSelect = True 
     End If 
    End If 
Next ctrl 

If Not ctrlSelect Then 
    MsgBox ("Please select a comparison criteria.") 
    Exit Sub 
End If 
관련 문제