【问题标题】:Access VBA Check if all Checkboxes are FALSE访问 VBA 检查所有复选框是否为 FALSE
【发布时间】:2018-05-06 12:54:44
【问题描述】:

大家下午好

我有这段代码来检查我的表单的复选框是否没有被选中,但是每次我都有这个错误消息: 运行时错误“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

运行时错误 #438:对象不支持此属性或方法

感谢您的帮助

【问题讨论】:

  • 要么你的消息框错了,要么你的逻辑错了。 iX 计算未选中的复选框的数量。因此,当iX = 0 时,这意味着所有复选框 已选中,但:MsgBox "No checkbox Selected."
  • @MoondogsMaDawg Bravooooooooo,我什至没有注意到这个逻辑错误。 |为你加油。 |它完全解决了问题!

标签: vba checkbox ms-access-2010


【解决方案1】:

尝试这样做:

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 属性。

【讨论】:

  • 好吧@Vityata,我尝试了您的解决方案,但收到此错误消息:#access reserved error 3201
  • @HoucineAdsens - 在哪里?
  • 当我单击表单的按钮执行代码时 #Reserved 错误 (-3201) 没有针对此错误的消息并完全关闭表单!!!!
  • @Vityata:我想我要重建我的表格了。
  • @Vityata:非常感谢
猜你喜欢
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 2012-05-14
  • 2011-11-03
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
相关资源
最近更新 更多