¿Cómo activar un optionbuttom desde un textbox?

hola necesito activar un optionbutton mediante una tecla pero trabajo desde un textbox

aquí un ejemplo de mi avance funciona a lo que quiero pero me escribe la letra asignada en el textbox

___________________________________

Private Sub UserForm_Initialize()
txtcodigo.SetFocus
End Sub

___________________________

Private Sub txtcodigo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
txtcodigo.Text = UCase(txtcodigo.Text)
If KeyAscii = 109 Then
opt1.Value = True
ElseIf KeyAscii = 101 Then
opt2.Value = True
ElseIf KeyAscii = 103 Then
opt3.Value = True
ElseIf KeyAscii = 107 Then
opt4.Value = True
End If
End Sub

entiendo que se me haría mas fácil haciendo clic para activar pero en mi userform tengo como 20 optionbutton y se me hace complicado buscarlo para hacer click

o alguna otra manera ?

1 Respuesta

Respuesta
1

Puedes cancelar la tecla asignada estableciendo el valor de KeyAscii a 0:

Private Sub txtcodigo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
txtcodigo.Text = UCase(txtcodigo.Text)
Select Case KeyAscii
Case 109
opt1.Value = True
Case 101
opt2.Value = True
Case 103
opt3.Value = True
Case 107
opt4.Value = True
End Select
' Cancel keystroke
KeyAscii = 0
End Sub

Otra opción sería asignar un acelerador de tecla al botón de opciones desde las propiedades del botón. Una vez hecho esto, puedes seleccionar el botón de opciones pulsando Alt + Tecla de aceleración:

El OptionButton opt1 puede ser seleccionando en este ejemplo, presionando Alt+m.

Un abrazo,
Claudia Castellano
Autora del Curso para Futuros Expertos en Excel

está chevre que no aparezca la letra pero ya no puedo escribir nada, mediante ese textbox yo ingreso unos códigos mediante lector de barras como haría? y con el accelerator tmb funciona pero se pierde el setfocus del textbox donde empieza al iniciar mi userform

No entiendo bien lo que quieres hacer. Si quieres que esté activo el textbox, no puedes tener activo el optionbutton y viceversa. Envíame un archivo de ejemplo explicándome visualmente lo que necesitas y te lo hago.

Email: [email protected]

Gracias por tu atención te acabo de mandar mi archivo....

He revisado tu archivo y observo que tienes dos preguntas distintas, por lo cual tendrás que abrir la segunda aparte. Son las normas de Todoexpertos. Vamos por partes.

Decirte que está muy bien tu aplicación. Has hecho un gran trabajo. En cuanto a la pregunta que has abierto aquí en Todoexpertos, comentarte que en tu ejemplo cuando asignas un accelerator al optionbutton, el textbox Código tiene el cursor activo, por lo que no pierde setfocus.

Tendrías que asignar un accelerator a cada optionbutton y activarlo mediante alt+ la letra que hayas establecido como accelerator. Con eso quedaría zanjada la primera cuestión. En las pruebas que he realizado en distintos equipos, se ejecuta perfectamente.

En cuanto a la segunda, escríbeme una nueva pregunta explicándome con más detalle lo siguiente:

- Una vez iniciado el formulario Userform1, dices que al registrar el primer código, lo almacena y vuelve el setfocus listo a registrar el siguiente.

- ¿Cómo introduces ese código en el textbox?

- Dónde se supone que debe almacenarse. Indícame hoja y celda concreta.

- Dices que una vez que lo lee, no lo almacena, sino que has de darle a Enter o hacer click en Ingresar. Tal y como has programado el UserForm1 está pensado para registrar los datos cuando hagas click en Ingresar con el resto de opciones. Entonces, ¿indícame qué es lo que quieres que ocurra cuando haces la lectura del código? ¿Qué almacene ese código directamente en la celda correspondiente sin hacer click? Pero entonces, ¿el resto de datos cuando los asignarías?

- ¿Dices qué a veces sí te funciona y otras veces no. Cuándo te funciona y cuando no? ¿Cuándo funciona qué es lo que hace el programa y cuando no?

Claudia Castellano

www.excelenaccion.com

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas