I am trying to replace the following:
txt1.Text = ""
txt2.Text = ""
txt3.Text = ""
txt4.text = ""
...continues for quite awhile
With:
Dim cCont As Control
开发者_运维百科
For Each cCont In Me.Controls
If TypeName(cCont) = "TextBox" Then
'reset textbox value
???
End If
Next cCont
How do I refer to the textbox using the generic 'Control'?
You already have your control in cCont.
Dim cCont As Control
For Each cCont In Me.Controls
If TypeOf cCont Is MSForms.TextBox Then
cCont.Text = "hi"
MsgBox cCont.Name
End If
Next
If you're confused by the fact you don't get the Text
property from IntelliSense, just cast the Control
to a more derived type:
Dim cCont As Control
For Each cCont In Me.Controls
If TypeOf cCont Is MSForms.TextBox Then
Dim cText As MSForms.TextBox
Set cText = cCont
cText.Text = "hi"
MsgBox cText.Name
End If
Next
This will use early binding instead of late binding, and you'll get your code suggestions.
精彩评论