Visual Basic para Aplicaciones - Crear formulario en tiempo de ejecución.

Life is soft - evento anual de software empresarial
 
Vista:

Crear formulario en tiempo de ejecución.

Publicado por Pablo (11 intervenciones) el 21/09/2014 13:50:30
Quiero generar un formulario en tiempo de ejecución.

Podría usar un MsgBox que dijera: La aplicación ha finalizado correctamente ¿Qué quieres hacer ahora?

Y personalizar dos botones [Iniciar de nuevo] y [Salir]

Pero no puedo (o no se) cambiar el tamaño de un MsgBox, que además en mi aplicación uso para dar avisos de que las cosas no funcionan.

Entonces se me ha ocurrido (bueno, en realidad lo dicen los foros) usar un formulario.

Pero como solo sería con un aviso personalizado y un par de botones, he pensado en crearlo en tiempo de ejecución.

Y ahí mi pregunta.

HE visto por ahí declarar el formulario como Dim frm As Form, y yo no puedo asignar variables Form en mi versión de Excel 2013, imagino que es porque no hago referencia a la biblioteca apropiada.

¿Alguien sabría decirme a qué biblioteca debo hacer referencia para poder crear formularios en tiempo de ejecución?
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 JuanC

Crear formulario en tiempo de ejecución.

Publicado por JuanC (565 intervenciones) el 21/09/2014 17:04:19
Una cosa es mostrar un simple MsgBox y otra muy distinta construir un Formulario más elaborado...
Nunca hice algo así pero supongo que puede hacerse mediante el uso de VBE
Te paso un link para que investigues...

http://stackoverflow.com/questions/11519345/creating-form-programmatically-in-the-module-using-vba

Saludos, desde Baires, JuanC
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

Crear formulario en tiempo de ejecución.

Publicado por Pablo (77 intervenciones) el 21/09/2014 18:01:17
Gracias Juan, muy agradecido.

Mis usuarios me han pedido "algo" que les diga que una aplicación que les hice usan ha terminado y ha terminado bien.

La aplicación toma un parte de trabajo que han rellenado en casa del cliente, hace copias en excel y pdf, envía una copia al cliente y otra a nuestro departamento de administración por email...

Y eso tarda unos segundos (además les puse un retraso de tres segundos para que a Outlook le diera tiempo asimilarlo).

Al terminar solo cierra el formulario que han estado usando, y según me comentan echan de menos un aviso.

A lo mejor "el cliente" solo quería una rueda atada a una rama para columpiarse (ya sabes).

Al ver que "programmatically" equivale a nuestro "tiempo de ejecución" he visto que hay algunos ejemplos de un tal John Walkenbach del que poseo un par de manuales de teoría y trucos VBA, que me serán de ayuda para otros temas.

Gracias por tu ayuda.
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
Imágen de perfil de Oscar

Crear formulario en tiempo de ejecución.

Publicado por Oscar (14 intervenciones) el 22/09/2014 17:45:53
No seria más facil crearte el formulario en desarrollo (visible=False) ponerle un label vació los dos botones que necesites y luego en tiempo de ejecución cuando necesites mostrarlo ponerle el texto al label y la propiedad visible = True
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

Crear formulario en tiempo de ejecPabloución.

Publicado por Pablo (1 intervención) el 27/09/2014 22:52:56
Al final el cliente solo quería una rueda atada a una rama para columpiarse.

En el formulario he colocado un controlbox, con una etiqueta de color rojo dentro, ocultos hasta que el usuario pulsa enviar.

Cuando el usuario pulsa enviar, aparece el control box con la etiqueta y con una variable controlo su parámetro width, de tal manera que parece una barra de progreso. Al caption del controlbox le voy poniendo el valor que va avanzando la etiqueta y al final cuando llega a 100% pone Terminado.

He tenido que establecer unos retrasos para que el usuario tenga la sensación de que eso pasa realmente y listo.

Un dia de estos aprendo a programar, lo prometo.
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