2008-12-17 10 views
5

¿Cómo paso el objeto TextBox de un formulario al método a?Pasando referencia de objeto en Visual Basic (VBA)

El siguiente código está emitiendo una excepción.

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

Private Sub TextBox1_Change() 
    DoSmthWithTextBox Me.TextBox1 
End Sub 

El problema aparece cuando DoSmthWithTextBox Me.TextBox1 pasa el String de TextBox1 en lugar de la referencia de objeto.

¿Cómo paso el objeto TextBox al método DoSmthWithTextBox?

Respuesta

12

de reescritura para Excel:

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

Por lo que yo sé, esto se debe a que Excel tiene un cuadro de texto objeto que es una forma, mientras que userforms utilizan el cuadro de texto control ActiveX, por lo que necesita una referencia explícita a la Biblioteca de MSForms.

+0

+1 para saber la diferencia. ;-) ¿Puedes escribir una breve explicación? – Tomalak

+0

¡¡SÍ !!!! Upvote from me ;-) Esto funciona para mí ... – Jox