Seleccionar fila de una hoja en listbox desde otra hoja

Private Sub ListBox1_Click()
    For i = 1 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            Set busco = ActiveSheet.Range("a:a").Find(Me.ListBox1, LookIn:=xlValues, LookAt:=xlWhole)
        If Not busco Is Nothing Then
            busco.Select
        End If
    End If
    Next
End Sub

Esta macro elige la fila de la HojaBD cargada en el Listbox, el detalle es que cuando estoy ubicado en otra hojaX no elige nada, lo que pasa es que cuando yo elijo una fila tengo un botón adicional que me abre otro formulario y carga los datos en varios textbox, pero al elegir la fila no carga ningún dato ya que está eligiendo la fila de la hojaX donde estoy ubicado, intenté modificar esta linea pero me muestra error:

Set busco = sheets(HojaBD).Range("a:a").Find(Me.ListBox1, LookIn:=xlValues, LookAt:=xlWhole)

1 respuesta

Respuesta
2

H   o la :

El nombre de la hoja debe ir entre comillas. Te anexo el código con algunos comentarios:

Private Sub ListBox1_Click()
'Por.Dante Amor
    'fila = ListBox1.List(ListBox1.ListIndex, 33)
    Set h1 = Sheets("BDDatos")
    'con la propiedad listindex determinas qué dato es el seleccionado
    valor = ListBox1.List(ListBox1.ListIndex, 0)
    Set b = h1.Range("A:A").Find(valor, LookIn:=xlValues, LookAt:=xlWhole)
    If Not b Is Nothing Then
        'No puedes seleccionar b, ya que estás en otra hoa.
        'en el objeto b tienes toda la información sobre la celda
        'por ejemplo, si necesidas el dato de la columna D, pero de la misma
        'fila donde encontró el dato:
        dato = h1.Cells(b.Row, "D")
    End If
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Siguen sin cargar mis txt =( cuando ejecuto le formulario desde otra hoja, llena el listbox con la información, pero como tengo otro adicional dentro del primero formulario, este debe cargar los campos en los txt pero nada que ver, ¿quizás sea este el problema?

Código del botón que ejecuta el formulario 2 con los txt

Private Sub CommandButton1_Click()
    If Me.ListBox1.ListIndex < 0 Then
        MsgBox "No se ha elegido ningún registro", vbExclamation, "EXCELeINFO"
    Else
        Modificar.Show
    End If
End Sub

Codigo del formulario 2 al ser lanzado

Private Sub UserForm_Initialize()
'cargas datos a los textbox
    For i = 1 To 33
        Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
    Next i
End Sub

le faltara algo?

aqui dejo un link como ejemplo de mi problema, gracias

https://mega.nz/#!Rs1h2aZB!HJ7gIHHXZWvzdgd7UNk12uNPs-3J6hVbVVD1X9l86Bs

No entiendo qué es lo que quieres hacer.

Envíame tu archivo y me explicas con colores, ejemplos y comentarios lo que quieres realizar.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Juan Fer” y el título de esta pregunta.

Ya envíe el archivo DAM, gracias

No me llegó el correo, recuerda poner tu nombre de usuario en el asunto.

Hola DAMOR ya te envíe el ejemplo del archivo, gracias.

Te anexo el código del userform1

Private Sub CommandButton2_Click()
    Unload Me
End Sub
'Private Sub ListBox1_Click()
'    For i = 0 To ListBox1.ListCount - 1
'        If ListBox1.Selected(i) = True Then
'            Set busco = ActiveSheet.Range("a:a").Find(Me.ListBox1, LookIn:=xlValues, LookAt:=xlWhole)
'        If Not busco Is Nothing Then
'            busco.Select
'        End If
'    End If
'    Next
'End Sub
'
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    UserForm2.Show
End Sub
'
Private Sub UserForm_Initialize()
    With ListBox1
        .ColumnCount = 6
        .ColumnWidths = "50 pt;50 pt;50 pt;100 pt;100 pt;60 pt"
        .ColumnHeads = True
    End With
    ListBox1.RowSource = "Datos"
End Sub

Te anexo el código del userform2

Private Sub UserForm_Initialize()
'Por.Dante Amor
'cargas datos a los textbox
    Set h = Sheets("COnforme")
    fila = UserForm1.ListBox1.ListIndex + 2
    For i = 1 To 6
        Me.Controls("TextBox" & i).Value = h.Cells(fila, i).Value
    Next i
End Sub

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas