我想通过我的窗体上的所有未绑定的控制回路,并清除他们的数据或重置他们的价值观。 我有文本框,组合框和复选框。 每次我尝试是这样的:
Dim ctl As Control
For Each ctl In Me.Controls
If IsNull(ctl.ControlSource) Then
ctl.Value = Nothing
End If
Next ctl
我得到一个运行时错误说:
438这种对象不支持此属性或方法。
该代码循环遍历窗体的每一个控制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