通过表单和清晰的数据在所有未绑定控件环路(Loop through all unbound cont

2019-07-21 08:57发布

我想通过我的窗体上的所有未绑定的控制回路,并清除他们的数据或重置他们的价值观。 我有文本框,组合框和复选框。 每次我尝试是这样的:

Dim ctl As Control
    For Each ctl In Me.Controls
        If IsNull(ctl.ControlSource) Then
            ctl.Value = Nothing
        End If
    Next ctl

我得到一个运行时错误说:

438这种对象不支持此属性或方法。

Answer 1:

该代码循环遍历窗体的每一个控制Controls集合。 收集包括控件,如标签和命令按钮,这既不是结合也不未结合...所以试图引用其.ControlSource产生错误。

对于这样的一个绑定文本框控件,其.ControlSource属性为空字符串,而不是空。

所以,当你遍历控制,检查.ControlSource只希望针对那些控件类型。 在下面的例子中,我选择了文本和组合框。 当.ControlSource是零长度的字符串,设置控制的.Value为NULL。

For Each ctl In Me.Controls
    Select Case ctl.ControlType
    Case acTextBox, acComboBox ' adjust to taste
        'Debug.Print ctl.Name, Len(ctl.ControlSource)
        If Len(ctl.ControlSource) = 0 Then
            ctl.value = Null
        End If
    Case Else
        ' pass
    End Select
Next


文章来源: Loop through all unbound controls on a form and clear data