Como abro un hipervínculo desde un Listbox en Excel

Tengo la siguiente situación, para ver si es que me pueden ayudar.

Tengo una Listbox que me muestra los datos de una tabla, pero tengo algunos datos repetidos como rut y nombre. Actualmente tengo un código que me detecta la celda por medio del Listbox, pero no me acepta datos repetidos, y lo necesito de esta forma ya que dentro de mi tabla una persona puede estar más de una vez asignada con otro hipervínculo.

Este es el código que tengo.

Private Sub ListBox1_Click()

Range("A2").Activate

Cuenta = Me.ListBox1.ListCount

Set Rango = Range("A1").CurrentRegion

For i = 0 To Cuenta - 1

If Me.ListBox1.Selected(i) Then

Valor = Me.ListBox1.List(i)

Rango.Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate

End If

Next i

End sub

El problema es que cuando selecciono uno de los datos que esta repetido me marca siempre el primero.

Necesito que al poder marcar uno pueda abrir un hipervínculo y al marcar el otro pueda abrir otro hipervínculo ( los hipervínculo se están almacenados por la misma fila varias columnas más adelante).

Me ayudarían muchísimo con esto.

1 Respuesta

Respuesta
3

¿Puedes poner el código que utilizas para cargar el listbox?

Si lo cargas con rowsource, tal vez no necesites el find.

Por ej. si tus datos empiezan en la fila 2, y seleccionas el primer registro del listbox, entonces el dato de la columna A lo obtienes así: dato = cells(listbox1.listindex + 2, "A")

Prueba y me comentas

Dante otra vez gracias por tu ayuda, no supe como adaptar la información que me diste al formulario. Tengo el archivo que al iniciar el formulario introduce los parámetros del Listbox, pero como comentaba al hacer click en los datos para la búsqueda, me selecciona siempre el primer archivo de los repetidos, pero necesito que pueda seleccionarlos por separado para luego abrir el hipervínculo, ya que pueden tener hipervínculos distintos.

Cuando cargar en el listbox, lo que te recomiendo es que cargues el número de fila al que pertenece el registro que estás cargando al list:

Private Sub CommandButton1_Click()
    Sheets("Hoja2").Activate
    If Me.TextBox1.Value = Empty Then
        MsgBox "Escriba un registro para buscar"
        Me.ListBox1.Clear
        Me.TextBox1.SetFocus
        Exit Sub
    End If
    Me.ListBox1.Clear
    items = Sheets("Hoja2").Range("Tabla1").CurrentRegion.Rows.Count
    For i = 2 To items
        If LCase(Cells(i, 2).Value) Like "*" & LCase(Me.TextBox1.Value) & "*" Then
            Me.ListBox1.AddItem Cells(i, 1)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, 2)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, 3)
            'agregar el número de fila
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = i
            '
        End If
    Next i
    Me.TextBox1.SetFocus
    Me.TextBox1.SelStart = 0
    Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
End Sub

Cuando seleccionas un registro en el list, lo que tienes que hacer es tomar el número de fila de la columna del list en donde lo almacenaste, en este caso, lo almacené en la columna 3.

Private Sub ListBox1_Click()
'Por.Dante Amor
    Sheets("Hoja2").Activate
    fila = ListBox1.List(ListBox1.ListIndex, 3)
    Cells(fila, "F").Select
End Sub

Ya tengo la fila, ahora solamente tengo que poner la columna "F" para seleccionar la celda.

Saludos. Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas