# Mover el enfoque en UserForm



## yoguibubu (Feb 25, 2002)

Como se puede mover el enfoque de un control a otro dentro de un UserForm:
Tengo un combobox (ComboBox2) y en el evento "afterupdate" he puesto:
UserForm1.ComboBox1.SetFocus
No se mueve el enfoque
Alguien me puede orientar?


----------



## Juan Pablo González (Feb 25, 2002)

Solo por probar, puse dos ComboBox en un Userform con el siguiente código:

<pre>
Option Explicit

Private Sub ComboBox2_AfterUpdate()
MsgBox "After"
'ComboBox1.SetFocus
End Sub

Private Sub ComboBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox "Before"
'ComboBox1.SetFocus
End Sub

Private Sub ComboBox2_Change()
MsgBox "Change"
End Sub
</pre>

Con este ejemplo se puede ver que para un ComboBox el evento que se dispara cuando se cambia o se selecciona un valor de la lista es el change, los otros dos se dispararon únicamente cuando cerraba el UserForm.

Con esto quiero decir que habría que poner la instrucción:

ComboBox1.SetFocus

en el evento Change() y no en los otros.  Una última cosa... esto es para controles COMBOBOX, para TextBox los dos eventos anteriores si se disparan como "debería" ser.


----------



## yoguibubu (Feb 25, 2002)

OK. Funciona como dices, Juan Pablo.
Aunque no me afecte ahora, pero he probado tambien lo del TextBox en el evento Change(), y curiosamente me lo hace en cuanto escribo o modifico el primer caracter. Pensé que lo haría al perder el enfoque y antes del AfterUpdate()
Saludos


----------



## Juan Pablo González (Feb 25, 2002)

Bueno, solo para clarificar... el evento Change() de un TextBox ocurre cuando se cambia el valor (Al igual que en un ComboBox), y esto ocurre apenas se entra cualquier caracter... por esto en TextBoxes es mejor usar el BeforeUpdate() para que se utilice el valor "final", y en ComboBoxes el evento Change() que es el que se dispara.


----------



## yoguibubu (Feb 25, 2002)

Gracias. Aclarado todo


----------

