¿Abrir formulario con doble click desde un Item de un LixtBox?

Cuento con este formulario de consulta:

La idea es que al hacer doble click en un item del listbox me muestre un formulario(frm_consulta_detalle) que se auto-rellenará con la información a detalle relacionada con el nombre, matricula y no. De accidente del listbox y el archivo excel origen (Hoja 1).

Este es más o menos el formato para el formulario frm_consulta_detalle:

En lugar del botón REGISTRAR se utilizará un botón llamado AJUSTE (btn_ajuste) el cual permitirá hacer una modificación o anexo de los datos ya registrados en el archivo origen (Hoja 1).

¿Qué códigos puedo implementar para estas tareas?

Respuesta
1

Envíame tu archivo para revisar cómo están los datos en la hoja y poder llenar el segundo frm

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Daniel Isaias Sánchez Treviño

¡Gracias! ya envié el correo ...

Así queda ahora tu código para filtrar en el form consulta

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    frm_registro_accidentes.Show
End Sub
'
Private Sub txt_Buscar_Change()
'buscar por nombre
    If Me.txt_Buscar.Value = Empty Then
        MsgBox "Escriba un Nombre o Matricuala de Agremiado"
        Me.ListBox1.Clear
        Me.txt_Buscar.SetFocus
        Exit Sub
    End If
    Call Llenar_List(Me.txt_Buscar.Value, 3, 4)
    Me.txt_Buscar.SetFocus
    Me.txt_buscar2 = Empty
    Me.txt_buscar3 = Empty
End Sub
'
Private Sub txt_buscar2_Change()
'buscar por taxi
    Call Llenar_List(Me.txt_buscar2.Value, 5, 5)
    Me.txt_buscar2.SetFocus
    Me.txt_Buscar = Empty
    Me.txt_buscar3 = Empty
End Sub
Private Sub txt_buscar3_Change()
'buscar por num accidente
    Call Llenar_List(Me.txt_buscar3.Value, 1, 1)
    Me.txt_buscar3.SetFocus
    Me.txt_buscar2 = Empty
    Me.txt_Buscar = Empty
End Sub
Sub Llenar_List(texto, col, co2)
'Por.Dante Amor
    Me.ListBox1.Clear
    Items = Range("Tabla1").CurrentRegion.Rows.Count
    texto = "*" & LCase(texto) & "*"
    For i = 3 To Items
        If LCase(Cells(i, col).Value) Like texto Or LCase(Cells(i, co2).Value) Like texto Then
            Me.ListBox1.AddItem Cells(i, 3)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, 4)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, 1)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, 17)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, 5)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, 14)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = i
        End If
    Next i
End Sub
'
Private Sub UserForm_Initialize()
Sheets(3).Select
'Le digo cuántas columnas
    ListBox1.ColumnCount = 6
    'Asigno el ancho a cada columna
    Me.ListBox1.ColumnWidths = "50 pt;180 pt;80 pt;60 pt;60 pt;30 pt"
        'El origen de los datos es la Tabla1
         '   ListBox1.RowSource = "Tabla1"
End Sub
Private Sub UserForm_Terminate()
'Sheets(1).Select
End Sub
Private Sub txt_buscar_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(StrConv(Chr$(KeyAscii), vbUpperCase))
End Sub
Private Sub txt_buscar2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(StrConv(Chr$(KeyAscii), vbUpperCase))
End Sub
Private Sub txt_buscar3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(StrConv(Chr$(KeyAscii), vbUpperCase))
End Sub

Puse en un solo procedimiento el filtrado, en esta línea almaceno el número de fila de la hoja.

Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = i

Entonces, con esa línea ya podemos saber cuando le des doble click a qué registro de la hoja vas a modificar.


En tu form registro_accidentes, el código quedaría así dentro del evento initialize

    'llena los datos con el registro seleccionado en frm_consulta_accidentes
    Fila = frm_consulta_accidentes.ListBox1.List(frm_consulta_accidentes.ListBox1.ListIndex, 6)
    txt_fecha1 = Cells(Fila, "B")
    txt_hora = Cells(Fila, "G")
    txt_ubicacion = Cells(Fila, "F")
    txt_matricula = Cells(Fila, "C")

Te puse unos ejemplos, completa los demás textbox.

Sal u dos, r ecuerda cambiar la valoración a la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas