jueves, 22 de octubre de 2015

VBA: Un hipervínculo dentro de un ListBox.

Tiempo atrás un usuario me planteaba cómo conseguir hacer en nuestro ListBox un hipervínculo...
Aunque no conseguiremos el efecto subrayado típico de los vínculos en Excel, desde luego alcanzaremos plenamente la funcionalidad, y al hacer doble clic sobre el item del ListBox se abrirá (si es que existe) la URL que aparezca.

Para ello partiremos de una sencilla tabla en nuestra hoja de cálculo (llamada 'TblCursos'), a partir de la cual, rellenaremos nuestro ListBox:

VBA: Un hipervínculo dentro de un ListBox.



En el siguiente paso crearemos nuestro Userform y dentro de él un ListBox que he renombrado como 'LstB_vinculos' con las siguiente propiedades importantes:
.ColumnCount = 2
.ColumnWithds = 100 pt; 100 pt
.RowSource = TblCursos

VBA: Un hipervínculo dentro de un ListBox.



Si lanzamos nuestro formulario esto es lo que veríamos:

VBA: Un hipervínculo dentro de un ListBox.



El paso siguiente y último es añadir la funcionalidad buscada, esto es, incluir la acción de hipervínculo... lo que conseguiremos con el método .FollowHyperlink.
Para tal fin, insertamos nuestro código dentro de la ventana del formulario desde el editor de VB:

Private Sub LstB_vinculos_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'gestionamos el realizar el hipervínculo
'al accionar doble clic sobre el ListBox

'dirigimos el procedimiento en caso de error en el link
On Error GoTo ControlErrores
ThisWorkbook.FollowHyperlink Address:=LstB_vinculos.List(LstB_vinculos.ListIndex, 1)

'marcamos la salida o fin del procedimiento
'.. tanto si todo ha ido bien
Exit Sub

'controlamos la alerta en caso de error
ControlErrores:
    If Err.Number = -2147221014 Then
        MsgBox "El vínculo no es correcto!!!"
    Else
        MsgBox "Error tipo: " & Err.Description
    End If
    'acabmos el control de errores saliendo del procedimiento
     Exit Sub
End Sub



Hemos acabado. Ahora al realizar doble clic sobre el item elegido se lanzará el evento _DblClick programado y se abrirá, si es el caso, en nuestro navegador web, la página o link correspondiente...

No hay comentarios:

Publicar un comentario en la entrada