I would like to loop through all UNBOUND controls on my form and clear their data or reset their values. I have textboxes, comboboxes and checkboxes. Every time I try some
That code loops through every control in the form's Controls
collection. The collection includes controls, such as labels and command buttons, which are neither bound nor unbound ... so attempting to reference their .ControlSource
generates that error.
For a control such as an unbound text box, its .ControlSource
property is an empty string, not Null.
So as you loop through the controls, inspect the .ControlSource
for only those control types you wish to target. In the following example I chose text and combo boxes. When the .ControlSource
is a zero-length string, set the control's .Value
to 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