Excel - Pregunta sobre formularios vba excel (Rene Garcia)

 
Vista:
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Pregunta sobre formularios vba excel (Rene Garcia)

Publicado por Antoni Masana (2499 intervenciones) el 06/02/2024 09:46:20
Buenas a todos.

Esta entrada es para contestar una consulta de Rene García que me hizo a mi correo electrónico y no he podido responder porque los correos que envío son devueltos sin poder entregarlos.

Saludos.
\\//_

Pregunta


Hola Antoni, buenas tardes, agradezco tu atención la página de ayuda excel, eres un gran maestro, con lo que me haz dicho he realizado varias cosas interesantes para mi trabajo, te comparto el último trabajo que hice, ahora estoy trabajando en el buscar que es lo que me falta, el diseño no es muy bueno ya que todavía no termino, pruebalo y dime que te parece, por favor

Respuesta


Hola Rene,

Esta muy bien. Solo le he dado un vistazo, no lo he probado

Te comento unos pequeños detalles que hay que revisar, los tres primeros TextBox de la izquierda el texto esta en dos filas y hay que ampliar el ancho para que se vea todo el texto.

Para facilitar las cosas en el futuro es mejor poner nombres mas significativos a los UserForm.

El primero es el LOGIN que ya esta bien.
El segundo es el menú, en lugar de llamarlo UserForm10 yo le pondría Menú.
Para el resto pongo el ejemplo del primero, en lugar de UserForm1 podría ser Opc_1_Amparo, es más identificativo a la hora de buscarlo y dentro de unos meses si tienes que revisarlo lo agradecerás.

RECURDA que tendrás que modificar en el código la llamada a los formularios.

      
Por lo que veo el Formulario es el mismo es todos los casos excepto el Login y el menú.

Yo lo que haría, siempre suponiendo que los objetos se llamen igual en todos, es tomar uno de los formularios, por ejemplo el primero que es que mejor esta, ajustar los objetos, alinearlos bien y replicarlo a los otros 8 procesos.

No te asustes, es mas sencillo de lo que parece.
Antes de renombrar los UserForm del 1 a 9 expórtalos al disco y bórralos del libro.
Esto genera dos ficheros:

UserForm1.frm
UserForm1.frx

El primero es el código y el segundo el formulario, Ahora hay que copiar el UserForm1.frx como UserForm2.frx, como UserForm3.frx, etc.
Para ello crea y ejecuta este pequeño BAT

1
2
3
4
5
6
7
8
copy UserForm1.frx UserForm2.frx /Y
copy UserForm1.frx UserForm3.frx /Y
copy UserForm1.frx UserForm4.frx /Y
copy UserForm1.frx UserForm5.frx /Y
copy UserForm1.frx UserForm6.frx /Y
copy UserForm1.frx UserForm7.frx /Y
copy UserForm1.frx UserForm8.frx /Y
copy UserForm1.frx UserForm9.frx /Y

Vuelve a importar los Formularios y listo. Y revisa las cabeceras para asegurar que todas tengan el titulo que le corresponde.

OJO - Antes de todo esto has una copia de seguridad para poder volver a tras si falla cualquier cosa.

No se que hace el código de cada uno de los formularios, pero me da la sensación de que el 95% de código es el mismo en todos y que solo cambia la hoja donde Lee/Escribe y poco más.
Yo hubiese realizado un solo formulario, a la hora de llamarlo justo antes se pone en titulo al formulario y después se hace la llamara 'SHOW'
También es aconsejable poner nombre a los botones que indique que hacen.
Es más fácil e intuitivo buscar en el código Btn_Amparo porque el texto del botón pone AMPARO que buscar CommandButton1

Pongo un ejemplo:

1
2
3
4
5
Private Sub Btn_Amparo_Click()
    Load Opc_1_Amparo
    Opc_1_Amparo.Caption = "AMPARO"
    Opc_1_Amparo.Show
End Sub

Y en función del titulo haría una cosa u otra. Ahora si hay que hacer un cambio o una corrección en la parte común del código, es decir en ese 95%, hay que hacerlo 9 veces, lo digo por experiencia.

Y por último al salir del menú mejor es guardar los cambios y cierra el libro.

Si quieres te envío el libro con los cambios que te propongo y el arreglo que he realizado n el menú.

Saludos
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