在Visual Basic(VBA)中传递对象引用

如何将表单的TextBox对象传递给方法?

以下代码发出exception。

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

DoSmthWithTextBox Me.TextBox1TextBox1传入String而不是对象引用时出现问题。

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

重写Excel:

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

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