访问VBA检查所有复选框是否都为FALSE

时间:2017-11-22 17:20:33

标签: vba checkbox ms-access-2010

下午好,

我有这段代码来检查我的表单的复选框是否未被选中,但是每次我收到此错误消息时: 运行时错误' 438'

var dot;

function setup() {
  createCanvas(640,480);

  dot = {
      x: random(width), 
      y: random(height), 
      size: 50,
      r: 255,
      g: 0,
      b: 0,
      speedX: 5,
      speedY: 5
  }

  background(240);
}

function draw() {
  ...

债务错误:

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
  

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

感谢您的帮助

1 个答案:

答案 0 :(得分: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属性。