Userform al usarlo más de 50 veces ya no funciona

Tengo un userform, el cual tiene como función recolectar unos datos ingresarlos en una hoja, cierra automaticamtente el userform y volver a cargar el userform, para recibir el siguiente dato, hasta que termine de ingresar toda la información, que puede ser por ejemplo más de 100 datos, pero al hacerlo y el userform carga como el dato 75 ya no funciona, no busca nada y se queda sin ejecutar ninguna instrucción. Este Ejemplo sencillo lo demuestra:

Private sub Prueba()

ActiveCell=ActiveCell+1 'En la celda actual, le irá sumando 1 cada vez que yo presione el botón

Unload Prueba 'Cierra el userform actual

Prueba.Show   'Vuelve a abrir el userform para presionar de nuevo el botón

End sub

Para éste ejemplo, tengo solo un botón, el cual al presionarlo más de 60, 70 o un poco más, ya no realiza nada, se queda bloqueado, como si el botón no tiene instrucciones.

Mi pregunta es: Como hago para que ésto no pase, ya que yo paso como un inventario y necesito ingresar más de 100 datos seguidos .

2 Respuestas

Respuesta
1

[Ho la y bienvenido a TodoExpertos!

Visita:

Cursos de Excel y Macros

Por Dante Amor

------ ---------------------------------------------------------------- ---

No entiendo dónde tienes el botón prueba.

¿Lo tienes en la hoja o en el userform?

¿Por qué cierras el userform y después lo vuelves a abrir?

Si utilizas ShowModal puedes interactuar con la hoja y con el userform si necesidad de cerrarlo. Revisa el siguiente vídeo:

Curso de macros. Userform uso de showmodal. - YouTube



Recomendaciones:

curso de macros. Consejos para empezar a programar. - YouTube

Curso 

cargar en listbox con filtro - YouTube

Sal u dos Dante Amor

¡Gracias! Estoy revisando cada uno de los videos para mejorar mi programa, es solamente un TExtBox el cual ingreso cierta información en otra hora, al encontrarlo lo copia a un cuadro y al terminar de hacerlo, vuelvo a cargar el formulario para realizar la misma acción con otro dato. Estoy usando TextBox.SetFocus para que me lleve el cursor automáticamente al textbox, pero me lo deja marcado el botón OK, pero estoy revisando los videos y ver como poder corregir esto, muchas gracias por tu ayuda.

Respuesta
1

Abres el Userform y recolectas información (por ejemplo más de 100 datos)

Luego presionas un botón, supongo que para guardar esos datos e incrementar en 1 la celda activa. Y si esto lo haces con la macro que dejaste aquí, quita la línea del Show:

Private sub Prueba()     'botón dentro del formulario
ActiveCell=ActiveCell+1 'En la celda actual, le irá sumando 1 cada vez que yo presione el botón
Unload Prueba 'Cierra el userform actual
End sub

Cuando quieras recolectar más información repites estos pasos.

1ra sugerencia: Luego de guardar e incrementar la celda activa no cierres el Uf. Solo limpia los campos y así podrás volver a recolectar información. Solo hay que tener presente cuál es, a esta altura, la celda activa.

2da sugerencia: Si necesitas cerrarlo ... y en otro momento, con cierta celda activa, volver a llamar al Userform, necesitarás llamarlo desde un botón, atajo de teclado o desde el mismo menú Macros. La macro sería entonces algo así:

Private sub Prueba()
Prueba.Show   ' abrir el userform y recolectar información
'al cerrarlo se actualizará la celda activa.
ActiveCell=ActiveCell+1 
End sub

Si necesitas trabajar con el resultado de la celda activa, la podés incrementar primero y luego llamar al formulario Pruebas.

Espero haberte interpretado correctamente, sino aclara un poquito más la idea.

Muchas gracias Elsa, es eso exactamente lo que estoy tratando de obtener y he seguido tu consejo, de ya no cerrar el UF, sino que solo limpiarlo, pero tengo el problema que, tengo un TextBox en la que ingreso cierta información (Con Scanner), después al dar INTRO/ENTER, en un botón al que llamaré OK, pero que automáticamente se activa cuando uso el escaner,  automáticamente me guarda esa información en una hoja de excel, seguido de eso, limpia el UF para ingresar de nuevo otro dato, pero tengo que al realizar ésto por segunda vez, no me lleva el cursor al TextBox, sino que se queda  remarcado el botón OK,  investique y encontre que con TextBox.SetFocus me debería llevar el cursor al TextBox, pero no lo hace y se queda marcado el botón, estaré realizando algo mal?

En el mismo proceso de limpieza debes darle el foco al control que necesitas para iniciar nuevamente el proceso.

Por ej:

'limpia los controles
textbox1 = "": textbox2 = "": textbox3 = ""
'quien recibe el foco
Textbox1. SetFocus

Por supuesto que si tienes muchos controles te convendría tener un código que los limpie de una, sin mencionar cada uno de los controles.

TE invito a visitar la sección Manuales de mi sitio. Allí encontrarás todas las macros en 1 solo lugar: el manual de Formularios.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas