2017-11-22 6 views
1

안녕하세요 FALSE 경우 모든액세스 VBA 체크 모든 체크 박스

내 양식의 확인란을 선택하지 않은 경우이 코드 조각을 확인해야하지만 때마다 나는이 오류 메시지가 : 런타임 오류 '438

가 가
If TypeName(ctl) = "CheckBox" And ctl.Value = False Then 

런타임 오류 # 438 : 개체가이 적절한를 지원하지 않습니다 '

Private Sub Btn_Send_Click() 
Dim ctl As Control 
Dim iX As Integer 

    For Each ctl In Me.Controls 
     If TypeName(ctl) = "CheckBox" And ctl.Value = False Then iX = iX + 1 
    Next ctl 

If iX = 0 Then MsgBox "No checkBox Selected", vbExclamation, "Title" 

End Sub 

오류를 Debbuging 타이 또는 방법

은 다음과 같이 그것을 할 당신의 도움을

+1

메시지 상자가 잘못되었거나 논리가 잘못되었습니다. 'iX'는 체크되지 않은 체크 박스의 수를 계산합니다. 그래서'iX = 0' 일 때, 모든 체크 박스가 체크되어 졌음을 의미합니다 :'MsgBox '체크 박스가 선택되지 않았습니다. " – MoondogsMaDawg

+0

@MoondogsMaDawg Bravooooooooo, 나는이 로직 오류조차 몰랐습니다. | 빅 업. | 그것은 문제를 완전히 해결했습니다! –

답변

2

시도 감사 :

For Each ctl In Me.Controls 
    If TypeName(ctl) = "CheckBox" Then 
     If ctl.Value = False Then 
      iX = iX + 1 
     End If 
    End If 
Next ctl 

이유는 VBA가 단락 평가를 지원하지 않는다는 것입니다 - Does the VBA "And" operator evaluate the second argument when the first is false?

따라서 첫 번째 조건이 False이라도 멋지게 이동하여 두 번째 조건을 확인합니다. . CheckBox 컨트롤이 아닌 경우 .Value 속성이 없으므로 오류가 발생합니다.

+0

음 @Vityata, 당신의 솔루션을 시도했지만이 오류 메시지가 나타납니다. #access 예약 된 오류 3201 –

+0

@HoucineAdsens - 어디서? – Vityata

+0

코드를 실행하기 위해 양식의 단추를 클릭하십시오 # 오류가 있습니다. (-3201)이 오류 메시지가 없습니다. 그러면 양식이 완전히 닫힙니다. !!!! –