2008-12-17 49 views
5

如何将表单的TextBox对象传递给方法?在Visual Basic(VBA)中传递对象引用

以下代码发出异常。

Private Sub DoSmthWithTextBox(ByRef txtBox as TextBox) 
    txtBox.BackColor = vbRed 
End Sub 

Private Sub TextBox1_Change() 
    DoSmthWithTextBox Me.TextBox1 
End Sub 

问题时DoSmthWithTextBox Me.TextBox1通过从TextBox1代替对象引用String出现。

如何将TextBox对象传递给DoSmthWithTextBox方法?

回答

12

重写为Excel:

Private Sub DoSmthWithTextBox(txtBox As MSForms.TextBox) 
    txtBox.BackColor = vbRed 
End Sub 

据我所知,这是因为Excel有一个对象文本框是一个形状,而用户窗体使用ActiveX控件的文本框,所以你需要一个明确的参照MSForms库。

+0

+1了解差异。 ;-)你能写一个简短的解释吗? – Tomalak 2008-12-17 12:56:39