我有一系列文本框,我想在表单加载时评估,以更改表单的其他一些元素.我想要创建一个函数,而不是逐行处理它们.如何将文本框的名称传递给函数.例如:
Private Sub Form_Load()
Call SetIntialToggleValue(MyTextboxName)
End Sub
Private Sub SetIntialToggleValue(ByRef ControlName As Control)
MsgBox ControlName.Value
End Sub
Run Code Online (Sandbox Code Playgroud)
这给了我MsgBox行上的"Object required"错误.这让我觉得我没有正确传递文本框控件.
小智 8
如果我有足够的代表评论,我会要求澄清,但这里有一些想法:
如果您没有显式声明您的变量MyTextboxName,它将是变体类型.您无法将变量传递给对象参数.这可能就足够了:
dim MyTextBoxName as Control
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,你根本不会使用名字.如果要使用名称,则必须更改功能.更改签名以获取字符串,然后使用该字符串作为Controls集合的索引(如果Access Forms上有一个):
Private Sub SetIntialToggleValue(ByRef ControlName As String)
MsgBox Form.Controls(ControlName).Value
End Sub
Run Code Online (Sandbox Code Playgroud)
像下面这样的怎么样:
Option Explicit
Dim ctl as Control
Private Sub Form_Load()
set ctl = Me.MyTextboxName
Call SetIntialToggleValue(ctl)
End Sub
Private Sub SetIntialToggleValue(ByRef ControlName As Control)
MsgBox ControlName.Value
End Sub
Run Code Online (Sandbox Code Playgroud)
我在这里找到了答案。您可以声明:
Private Sub SetIntialToggleValue(ByRef ControlName As MSForms.TextBox)
Run Code Online (Sandbox Code Playgroud)