Pasar de un TextBox a un CommandButton al dar Enter.

Tengo un userfom con varios TextBox, ComboBox y CommandButton. Mientras cargo los datos voy pasando de un TextBox a otro con éxito pero al llegar al Text 10 (ultimo Textbox) doy enter y se pasa el comBox 1 y necesito que pase al CommandButton2. Para que al volver a dar enter ejecute la macro asociada a ese CommandButton.

Probé este código sin resultado:

Private Sub Text10_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Command2.SetFocus
End Sub

Al dar enter sigue pasando al combobox en ves de al commandbutton. Alguna idea.?

Respuesta
1

Como dato extra, solo para aportar conocimiento para el futuro o para este mismo proyecto en el que estas. Los CommandButtons tienen una propiedad llamada "Default".

Por defecto esta en Falsa. Si cambias esa propiedad a True entonces el CommandButton actuará como control por defecto, en otras palabras, se acciona al presionar Enter desde cualquier parte del userform sin tener que darle el Focus o dar click con el mouse.

Para usar esta ventaja debes moverte por el resto de controles con TAB en lugar de ENTER (que es lo mas lógico), porque la tecla ENTER accionará el CommandButton sin importar donde este el focus en el UserForm.

4 respuestas más de otros expertos

Respuesta
2

Aunque el Excel no es lo mío ¿has probado con

Private Sub Texto10_LostFocus()
Command2.SetFocus
End Sub

hola ICUE..

Lo probé y tampoco funciona.. cuando el cursor esta en el textbox10 y doy enter pasa el combobox1 y no al commanbutton2 como necesito.!!

Ya te digo que el Excel no es lo mío, pero la verdad, me extraña, ya que usan el mismo código VB. Si tengo el formulario donde le he añadido un botón de comando Comando11. Por otro lado le he puesto que cuando reciba el enfoque se ponga amarillo. Es para que veas que del cuadro de texto se va directamente a ese control.

Ahora voy a cambiarle el nombre en NombreCliente(no sería necesario, pero es para que veas, que desdse ahí se va al botón).

Puedes ver que el cursor está en el control NombreCliente. Si ahora pulso Enter

El cursor se ha ido al botón.

Y como te decía, en este caso, la instrucción es

Private Sub NombreCliente_LostFocus()
Comando11.SetFocus
End Sub

Por cierto, no necesitas modificar el orden de tabulación. En la imagen que te envié el botón es el último, pero en VB los eventos tienen prioridad absoluta sobre cualquier otra cosa. Por ejemplo, puedes poner como fondo de un cuadro de texto el color ROJO. Si en el evento Al cargar, Al abrir, al activar registro... le dices

textoX.backcolor=vbgreen

Se verá en verde hagas lo que hagas

Respuesta
1

[Hola. Si te entendí bien lo que quieres es llevar el orden, de forma que al dar enter se vaya pasando el setfocus a otro objeto.

Selecciona cada conttrol uno a uno y vas cambiando el orden en TabIndex. Ten en cuenta que tienes que empezar por el "0"

Salu2 Carlos Arrocha

Respuesta
1

Intenta así:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
CommandButton1.SetFocus
End Sub

¡Gracias!

No lo probé, porque con lo que me paso Carlos Arrocha lo solucione a la perfección y me permitió controlar todo sin poner códigos..

Gracias Igual por responder y ayudar.!

Respuesta
1

Todos aportan su granito de arena je je aquí te dejo el mio =) espero te sirva

Private Sub Text10_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        Command2.SetFocus
    End If
End Sub

Saludos no olvides valorar la respuesta ..=)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas