Visual Basic para Aplicaciones - Abrir UserForm con variable

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 7 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Abrir UserForm con variable

Publicado por Carlos (3 intervenciones) el 11/09/2019 16:54:38
Buen día a todos!

Soy nuevo en el foro, me gusta mucho trabajar con excel y tengo conocimientos pero no soy un experto cuando se trata de vba, y despues de buscar en otros post no he podido encontrar solucion a mi caso, espero que ustedes puedan ayudarme:

Caso:
Estoy programando un libro de trabajo en excel para captura de informacion de unos analisis, para facilitar un poco esta tarea estoy realizando UserForm's para poner respuestas predeterminadas y registrarlas a la base de datos en excel.

Problematica:
Estos UserForm's que estoy programando son muchos, ya que tengo diferentes datos que analisar por lo cual mi intencion es crear un Sub() que pueda abrirme los UserForm dependiendo la respuesta que yo de en el UserForm que estoy editando. Mis UserForms's les estoy colocando nombres con letras y numeros consecutivos (uf_1,uf_2,uf_3,uf_...), por lo cual lo que necesito hacer es que dependiendo el boton que presione, se sume ya sea 1 al numero consecutivo o 2 dependiendo de mis datos.


Codigo Intentado:
Codigo Sub insertado en un modulo:
1
2
3
4
5
6
7
8
Public NumeroPantalla As Integer
Public Pantalla As String
Sub CargaPantalla()
     Pantalla = "uf" & NumeroPantalla
     Load Pantalla
     Unload Me
     Pantalla.Show
End Sub

Codigo Boton 1:
1
2
3
4
Private Sub btn_NuevoBulto_Click()
     NumeroPantalla = NumeroPantalla + 1
     CargarPantalla
End Sub

Codigo Boton 2:
1
2
3
4
Private Sub btn_ContinuarCaptura_Click()
     NumeroPantalla = NumeroPantalla + 2
     CargarPantalla
End Sub

Por lo que si presiono el boton "btn_NuevoBulto" este me hara mi variable NumeroPantalla = 1 que hara mi variable Pantalla = "uf_1" y ya mi Sub abriria el UserForm "uf_1", pero si presiono el boton "btn_ContinuarCaptura" me hara mi variable NumeroPantalla = 2 que hara mi variable Pantalla = "uf_2" y abrira mi UserForm llamado de esa forma.

Por el momento no puedo hacer que abra la pantalla con el codigo Load... ya que me marca error pero no se como corregirlo

Espero haberme explicado de la mejor manera y puedan ayudarme con este reto que tengo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de alfredo lara
Val: 123
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Abrir UserForm con variable

Publicado por alfredo lara (38 intervenciones) el 11/09/2019 20:46:12
Hola Carlos

Asi a simple vista, no lo abre porque lo estas cerrando antes de que aparezca

1
2
3
4
5
6
Sub CargaPantalla()
     Pantalla = "uf" & NumeroPantalla
     Load Pantalla
     Unload Me   ' <-- Aqui lo estas cerrando antes de mostrarlo (.show)
     Pantalla.Show
End Sub

En tratándose de varios form abiertos, si estas intentando cerrar un UserForm que ya se encuentra abierto es mejor cerrarlo por su nombre P.ej.: Unload uf_1, o el form que desees

Prueba y comentas

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 4
Ha disminuido su posición en 7 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Abrir UserForm con variable

Publicado por Carlos (3 intervenciones) el 11/09/2019 22:54:02
Hola alfredo,

Muchas gracias por el comentario, despues de investigar toda la mañana pude encontrar una solucion, solo coloque el codigo que esta en el siguiente link y lo anexe a mi funcion en mi modulo, con eso ya pude manipular la forma de abrir el UserForm.

http://www.cpearson.com/Excel/showanyform.htm

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar