PROGRAMAR MÉTODO POPUP DE VBSCRIPT

Hola a todos:

Hace unos días en LinkedIn os comenté una alternativa a la función MsgBox() en vba a la hora de mostrar una ventana emergente. Esta alternativa es el método Popup de VBScript.

Es muy sencillo de programar!. Vemos de qué argumentos se compone utilizando un ejemplo:

mensaje= MiObjShell.PopUp(Texto,[Tiempo de espera en segundos],[Titulo de la ventana (opcional)],[Tipo (opcional)])

El primer argumento es el que hace referencia al texto de contenido del PopUp.

El segundo argumento es el tiempo en espera y que se expresa en segundos. Indicaremos aquí el tiempo que queremos que se muestre la información.

El tercer argumento es el título de la ventana del PopUp, es opcional, si no ponemos nada por defecto se mostrará “Windows Script Host”.

El cuarto argumento que también es opcional nos va a permitir mostrar un icono y el tipo de botones que queremos que se muestren en nuestro PopUp:

Iconos:

16 – Stop (o vbCritical)
32 – Interrogante (o vbQuestion)
48 – Exclamación (o vbExclamation)
64 – Información (o vbInformation)

Tipo de botones:

0 – Aceptar (o vbOKOnly)
1-  Aceptar/Cancelar (o vbOkCancel)
2- Anular/Reintentar/Omitir (o vbAbortRetryIgnore)
3- Si/No/Cancelar (o vbYesNoCancel)
4- Si/No (o vbYesNo)
5- Reintentar/Cancelar (o vbRetryCancel)
6- Cancelar/Reintentar/Continuar

Por ejemplo, aquí lo programo con un Set:

Mostramos el mensaje “DESEAS MOSTRAR LA INFORMACIÓN?” que debe mostrarse durante 1 segundo y mostramos el icono de la interrogación y los botones Si/No

Sub PopUp()
Dim MiObjShell As Object
Dim imensaje As Long
Set MiObjShell = CreateObject("wscript.shell")
imensaje = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", 32 + 4)
End Sub

Podríamos ejecutar el mensaje varias veces para que veais que cada segundo (aprox) cambia automáticamente de mensaje hasta que finaliza la rutina:

Sub PopUp()
Dim MiObjShell As Object
Dim imensaje As Long
Set MiObjShell = CreateObject("wscript.shell")
imensaje1 = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", 32 + 4)
imensaje2 = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", vbInformation + vbAbortRetryIgnore)
imensaje3 = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", vbCritical + 6)
imensaje4 = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", vbExclamation + 2)
End Sub

Estos serían los PopUp’s generados:

imensaje = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", 32 + 4)

PROGRAMAR MÉTODO POPUP DE VBSCRIPT

imensaje = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", vbInformation + vbAbortRetryIgnore)

PROGRAMAR MÉTODO POPUP DE VBSCRIPT_1

imensaje = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", vbCritical + 6)

PROGRAMAR MÉTODO POPUP DE VBSCRIPT_2

imensaje = MiObjShell.PopUp("DESEAS MOSTRAR LA INFORMACIÓN?", 1, "MI VENTANA", vbExclamation + 2)

PROGRAMAR MÉTODO POPUP DE VBSCRIPT_3

Como podéis observar son una buena alternativa a los MsgBox que todos solemos utilizar, solo que con alguna funcionalidad más.

Y eso es todo, espero que os haya resultado interesante y lo podáis implementar en vuestras programación y proyectos.

Descarga el archivo de ejemplo pulsando en: PROGRAMAR MÉTODO POPUP DE VBSCRIPT

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

MOSTRAR UN POPUP EN IMAGEN AL MOVER EL CURSOR POR ENCIMA

Hola a todos:

En el post de hoy vamos a comprobar que es posible crear un “pop up” en una imagen vinculado al movimiento del cursor cuando pasa por encima.

Sobre este asunto no existe muchas alternativas en Excel, dado que las imágenes, formas o iconos no permiten o carecen de eventos como los pop up o información emergente.

Pero existe una forma o técnica que nos puede ayudar a realizar la tarea comentada. Es decir, un hipervínculo programado con VBA. Sobre las características os remito a este enlace: Método Hyperlinks.Add

En concreto con el parámetro: ScreenTip, definido como: La información en pantalla para que aparezca cuando se sitúa el puntero del ratón sobre el hipervínculo.

Pero claro este método hay que programarlo para que sea funcional y efectivo. Veamos un ejemplo.

Tenemos las siguientes formas:

MOSTRAR UN POPUP EN IMAGEN AL MOVER EL CURSOR POR ENCIMA

Para hacer el ejercicio más claro, vamos a darle nombre a cada forma: “Elipse”, “Triángulo”, “Rectángulo”. El nombre se lo podéis cambiar en el cuadro de nombres, al lado de la barra de fórmulas, solo tenéis que seleccionar la imagen y cambiar el nombre y pulsar enter.

Una vez cambiados y para hacer el ejercicio visual, vamos a incluir en nuestra hoja una serie de parámetros a incluir en el PopUp en cada forma:

MOSTRAR UN POPUP EN IMAGEN AL MOVER EL CURSOR POR ENCIMA_1

En la columna N están los nombres de las formas, que nos servirán como guías para mostrar el dato de la columna O en cada una de las formas.

Ahora copiamos y pegamos el código que he creado:

Sub Crear_PopUp()
'Declaramos variables
Dim miarray As Variant, forma As Variant
Dim nCampo As Object, sItem As Object
Dim nCol As String, dato As String
'Desactivamos actualización de pantalla
Application.ScreenUpdating = False
'Pasamos los nombres de las formas a un array
miarray = Array("Elipse", "Triángulo", "Rectángulo")
'Por cada forma eliminamos hipervínculo
For Each forma In miarray
ActiveSheet.Shapes(forma).Select
On Error Resume Next
Selection.ShapeRange.Item(1).Hyperlink.Delete
On Error GoTo 0
'Pasamos información a la variable dato
Set nCampo = Range("N:N")
Set sItem = nCampo.Find(forma)
nCol = sItem.Address
dato = Range(nCol).Offset(0, 1)
dato2 = Range(nCol).Offset(0, 2)
'Creamos nuevo hipervínculo y pasamos la información al ScreenTip
ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:="", ScreenTip:="" & dato & " " & dato2
Next
End Sub

El resultado es el siguiente:

MOSTRAR UN POPUP EN IMAGEN AL MOVER EL CURSOR POR ENCIMA_2

Como podéis comprobar, se ha creado el hipervínculo (que lleva a la misma hoja en la que estamos) y con el texto indicado para la Elipse.

En la macro he habilitado también la columna P para introducir otro dato y que veáis cómo se agregan campos. El efecto conseguido es el que buscamos, cuando nos acercamos a la forma, se muestra el texto y cuando nos alejamos se oculta.

Esto, obviamente lo podéis programar de distintas formas, por ejemplo con un Select Case podéis tener los parámetros de la hoja en el propio código. También que la macro se ejecute cuando se abre el archivo o se activa una celda, etc. El objetivo de este post es mostrar que es posible hacerlo y de una forma sencilla y eficaz.

Y eso es todo, espero que os resulte de utilidad en vuestros cuadros de mando o presentaciones : )

Descarga el archivo de ejemplo pulsando en: MOSTRAR UN POPUP EN IMAGEN AL MOVER EL CURSOR POR ENCIMA

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies