我有两个潜艇:cmdSafe和checkTime。我想调用subCheck并传递一个userform控件。
Private Sub cmdSafe_click()
Call checkTime(ufTimes.txtBegin)
End Sub
Sub checkTime(cntrl as Control)
'Do something
End sub
在这种情况下,我在尝试调用sub时遇到错误。 Run-time error 424: Object required.
我去检查ufTimes.txtBegin,但这给出了文本框的值15
。
我希望能够通过将第一个子更改为以下内容来解决此问题:
Private Sub cmdSafe_click()
Dim ctl as control
ctl = ufTimes.txtBegin
Call checkTime(ufTimes.txtBegin)
End Sub
这在Run-time error 91: Object variable or With block not set
行上给了我另一个错误(ctl=ufTimes.txtBegin
),可能是因为它试图将ctl设置为值。我该如何解决这个问题?我想传递一个控件,它也应该是一个ComboBox,例如
答案 0 :(得分:2)
在Excel 2013中,等效似乎可以正常工作 - (编辑),前提是您在分配<\/p>
变量时使用Set
。我将一个CommandButton和一个TextBox添加到空白用户窗体,代码为:
Control
一种选择是使用Private Sub CommandButton1_Click()
Dim c As Control
Set c = TextBox1 '<-- works with "Set"
Call DoSomething(UserForm1.TextBox1) '<-- also works
End Sub
Sub DoSomething(c As Control)
MsgBox c.Text
End Sub
代替TextBox
- 如果可以,请更具体。
我的引用设置为VBA,Microsoft Excel 15.0对象库,OLE自动化,Microsoft Office 15.0对象库和Microsoft Forms 2.0对象库。