Macro para devolver datos desde una bd (diferente hoja) a una planilla según item seleccionado de un listbox (de la hoja)

Pregunta para Dante Amor

Hace un tiempo me pasaste el siguiente código que tenía el fin de devolver datos a una planilla cargandolos desde una base de datos que estaba presente en la misma hoja, todo ello según el item seleccionado de un listbox al pulsar un botón de cargar:

Private Sub CommandButton1_Click()
'---
'   Por.Dante Amor
'---
    If ListBox1.ListIndex = -1 Then
        MsgBox "Selecciona un registro del list"
        Exit Sub
    End If
    '
    nombre = ListBox1.List(ListBox1.ListIndex)
    Set b = Columns("AB").Find(nombre, lookat:=xlWhole)
    If Not b Is Nothing Then
        Range("L4") = Cells(b.Row, "AC")    'nombre
        Range("L5") = Cells(b.Row, "AD")    'código
        Range("L6") = Cells(b.Row, "AE")    'tipo
    End If
    MsgBox "Los datos se han pasado con éxito", vbInformation, "CARGAR"
End Sub

Ahora tengo la necesidad de hacer algo muy parecido, para otra hoja, pero en este caso la base de datos está en una hoja diferente y no en la misma, he probado diferentes adaptaciones pero no lo consigo, actualmente tengo esto pero no me funciona:

Private Sub btnCargar_Click()
'Declaramos variables
Dim Cargar As String
Cargar = MsgBox("Deseas cargar la sesión seleccionada?", vbYesNo)
    If Cargar = vbYes Then
            If ListBox2.List(ListBox2.ListIndex, 0) = -1 Then
                MsgBox "Selecciona un registro del list"
                    Exit Sub
            End If
            Dato = ListBox2.List(ListBox2.ListIndex, 0)
            Set b = Sheets("BDRutinas2").Range("B4:B1000").Find(Dato, lookat:=xlWhole)
            If Not b Is Nothing Then
        Range("M4") = Cells(b.Row, "A")    'Fecha
        Range("N2") = Cells(b.Row, "B")    'Nombre del programa
        Range("L3") = Cells(b.Row, "C")    'Nombre
        Range("L4") = Cells(b.Row, "D")    'Código
        Range("L5") = Cells(b.Row, "E")    'Tipo
End If
    MsgBox "La sesión ha sido cargada con éxito", vbInformation, "CARGAR SESIÓN DE ENTRENAMIENTO"
End If
End Sub

He puesto 0 pk el valor que debe buscar en la base de datos es el valor de la primera columna del listbox y una vez encontrado en la bd, cargar sobre ese rango cada valor de la columna en la planilla de la hoja principal.

Respuesta
1

1 respuesta más de otro experto

Respuesta
1

[Hola 

Te paso la macro actualizada

Private Sub btnCargar_Click()
'
'Act. Por Adriel Ortiz
    'Declaramos variables
    Dim Cargar As String
    '
    Set h = Sheets("BDRutinas2")
'
    Cargar = MsgBox("Deseas cargar la sesión seleccionada?", vbYesNo)
    If Cargar = vbYes Then
            If ListBox2.List(ListBox2.ListIndex, 0) = -1 Then
                MsgBox "Selecciona un registro del list"
                    Exit Sub
            End If
            Dato = ListBox2.List(ListBox2.ListIndex, 0)
            Set b = h.Range("B4:B1000").Find(Dato, lookat:=xlWhole)
            If Not b Is Nothing Then
                Range("M4") = h.Cells(b.Row, "A")    'Fecha
                Range("N2") = h.Cells(b.Row, "B")    'Nombre del programa
                Range("L3") = h.Cells(b.Row, "C")    'Nombre
                Range("L4") = h.Cells(b.Row, "D")    'Código
                Range("L5") = h.Cells(b.Row, "E")    'Tipo
            End If
    MsgBox "La sesión ha sido cargada con éxito", vbInformation, "CARGAR SESIÓN DE ENTRENAMIENTO"
    End If
End Sub

Finaliza la respuesta valorando saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas