Visual basic en excel

He programado un form(formulario) en vb, para meter datos en una planilla, para ubicarme en la ultima celda desocupada he usado las sentencias:
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1,0).Activate
Loop
Pero al momento de ingresar los datos por medios de "cuadros de texto" en el form, me va trasladando letra a letra a la planilla y en celdas diferentes hacia abajo.
Antes probé estas mismas sentencias con cajas del tipo inpu msgbox(...) y resulta bien pero cuando lo hago desde cuadros de texto del form no me resulta.
¿Cómo puedo hacerlo para que si me resulte? ¿Existe alguna instrucción para deshabilitar el traslado letra a letra de un cuadro de texto y que solo lo haga al presionar el enter?
Gracias de antemano amigo
Saludos rik

2 Respuestas

Respuesta
1
El comportamiento de tu cuadro de texto pareciera estar ocasionado en el evento que tiene asociado.
Es posible que al crearlo hayas dado doble click sobre él y que las instrucciones de traslado a la hoja estuvieran colocadas entre estas dos líneas:
Private Sub TextBox1_Change()
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
ActiveCell.Value = TextBox1.Text
End Sub
Usualmente el vuelco de un textbox se realiza a través de un CommandButton (un botón) simple que equivale al "Aceptar". Es decir que tu macro de desplazamiento y copiado a la hoja debe estar asociado a ese botón y no al cuadro de texto.
Ve a tu formulario y da doble click sobre el textbox correspondiente, fíjate si existe la instrucción
Private Sub TextBox1_Change()
Borra todo lo que haya en esa pantalla.
Asimismo, da doble click sobre tu botón de aceptar e incluye allí tu código.
aclarando qué entendí mal o qué faltó.
Respuesta
1
¿En qué evento del textbox pones el código este? ¿En el "Change"?
En mi opinión creo que no es la manera de hacerlo, sino que tendrías que poner un botón, que al presionarlo copie todo el contenido del textbox a una casilla y después borre el contenido del textbox o cierre el form, según te convenga. Es la forma más normal de hacerlo.
También puedes poner el código en el ventó "keypress":
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
End Sub
Y mirar si se ha presionado el enter, pero no queda muy claro, es mejor la opción del botón. Si con el botón puesto, quieres que al pulsar "Enter" funcione, ponle la propiedad del botón "Default" a True

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas