访问 VBA 检查是否所有复选框都为 FALSE
Access VBA Check if all Checkboxes are FALSE
大家下午好
我有这段代码来检查我的表单的复选框是否未选中,但每次我都会收到此错误消息:
运行时错误“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
调试错误:
If TypeName(ctl) = "CheckBox" And ctl.Value = False Then
Run-Time Error #438: Object doesn't support this property or method
感谢您的帮助
尝试这样做:
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
属性.
大家下午好
我有这段代码来检查我的表单的复选框是否未选中,但每次我都会收到此错误消息: 运行时错误“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
调试错误:
If TypeName(ctl) = "CheckBox" And ctl.Value = False Then
Run-Time Error #438: Object doesn't support this property or method
感谢您的帮助
尝试这样做:
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
属性.