在循环遍历每个控件的For Each循环中键入不匹配错误

时间:2018-05-17 18:08:42

标签: ms-access access-vba

我设置了一个userform,用于检查是否选中了复选框控件,如果是,则将标签的值添加到变量中。每个控件的标签都有唯一的编号。

Dim ctl As Control
Dim sum As Long

For Each ctl In Userform1.Controls
    If ctl.ControlType = acCheckBox Then
        If ctl.Value = True Then sum = sum + ctl.Tag
    End If
Next
Me.TextBox7 = sum

但是,当代码到达每个语句时,会抛出类型不匹配错误,并且ctl = Nothing。我添加了一个中断,看看是否在第一次迭代时发生了这个错误,而且似乎就是这种情况。思考?这应该是一个简单的小工具来帮助另一个项目...

2 个答案:

答案 0 :(得分:1)

尝试此代码

Dim ctl As CheckBox

答案 1 :(得分:0)

我在这里猜测,但是If ctl.Value = True Then sum = sum + ctl.Tag上的错误是什么?您可能要查找的值为-1而不是True,因为这是复选框在Access-VBA中评估的方式。

修改

哎呀,忽略它。我想我发现了问题,请将For Each ctl In Userform1.Controls更改为For Each ctl In Forms(Userform1).Controls