Código VBA para modificar desde UserForm una Base de Datos en hoja de Excel

Estoy trabajando en un UserForm en Excel. En el cual a través de dos comboboxs se buscan los datos al presionar un botón, los datos son cargados en un listbox, lo que quisiera realizar es que al hacer click en una fila del listbox se abra otro UserForm en donde aparezcan los datos de la fila correspondiente a la hoja de excel en TextBoxs, para poder modicar los datos y al presionar un botón se guarden las modificaciones realizadas en la misma fila de Excel.

Les deseo un ¡Feliz 2016!

Cordiales saludos

Blás

Respuesta
1

H o l a:

Envíame tu archivo con el formulario, me dices cómo se llama tu formulario, para adaptar el código.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Blas Gerardo Salinas” y el título de esta pregunta.

Estimado Dante:

Ya te envié el archivo a tu e-mail

Desde ya muchas gracias

Cordiales saludos 

Blás

H o l a:

Te explico los cambios que realicé.

1. En el form frm_RD en la carga del listbox, agregué en una columna el número de fila con esta instrucción:

lst_LLP.List(lst_LLP.ListCount - 1, 4) = B.Row

Quedaría así

Sub LOADLISTBOXINBOOK()
    lst_LLP.Clear
    Set H = Sheets("DETALLE DE PRESTAMOS.exe")
    Set R = H.Columns("C")
    Set B = R.Find(cbm_DL)
    If Not B Is Nothing Then
        NCELL = B.Address
        Do
            lst_LLP.AddItem H.Cells(B.Row, "A")
            lst_LLP.List(lst_LLP.ListCount - 1, 1) = H.Cells(B.Row, "H")
            lst_LLP.List(lst_LLP.ListCount - 1, 2) = H.Cells(B.Row, "K")
            lst_LLP.List(lst_LLP.ListCount - 1, 3) = H.Cells(B.Row, "M")
            lst_LLP.List(lst_LLP.ListCount - 1, 4) = B.Row
            Set B = R.FindNext(B)
        Loop While Not B Is Nothing And B.Address <> NCELL
    End If
End Sub

Para llamar al formulario de edición frm_RD_edit así:

Private Sub cmd_LOAD_Click()
'Por.Dante Amor
    If lst_LLP.ListIndex = -1 Then
        MsgBox "Selecciona un registro", vbExclamation
        Exit Sub
    End If
    With frm_RD_edit
        .fila = lst_LLP.List(lst_LLP.ListIndex, 4)
        .Show
    End With
    LOADLISTBOXINBOOK
End Sub

El formulario frm_RD le pasa como parámetro el número de fila al frm_RD_edit, para ello es necesario declarar en frm_RD_edit la variable fila como public, en el evento activate se cargan los textbox y con el botón se pasa la información de los textbox a las celdas.

Public fila
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h1 = Sheets("DETALLE DE PRESTAMOS.exe")
    txt_PROROGATION = h1.Cells(fila, "N")
    txt_STATUS = h1.Cells(fila, "K")
    txt_FD = h1.Cells(fila, "L")
End Sub
'
Private Sub cmd_RD_Click()
'Por.Dante Amor
    Set h1 = Sheets("DETALLE DE PRESTAMOS.exe")
      h1.Cells(fila, "N") = txt_PROROGATION
      h1.Cells(fila, "K") = txt_STATUS
      h1.Cells(fila, "L") = txt_FD
      MsgBox "Registro actualizado", vbInformation
      Unload Me
End Sub

‘
F E L I Z A Ñ O T E D E S E A D a n t e A m o r. Recuerda valorar la respuesta. G r a c i a s
:) 

¡Gracias Dante! 

Por tu valioso tiempo, que has utilizado para resolver mi pregunta, con una maestría sensacional.

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Feliz 2016,!!!!!!!!!!!!!!!!!!!!!! ....éxitos para todos tus proyectos en este nuevo año  ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas