Visual Basic para Aplicaciones - Modificar tabla Excel Segun Listado de ListBox

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Wilb

Modificar tabla Excel Segun Listado de ListBox

Publicado por Wilb (7 intervenciones) el 13/09/2022 17:49:23
Buenos días amigos,
Recurro a su conocimiento para que me ayuden a resolver el siguiente caso:
He creado un botón que busca los item de una tabla y los carga a un listbox.
Una vez cargados los item, edito cada uno y los actualizo en el mismo listbox.
Terminado de editar cada uno lo que necesito resolver es que con un botón actualice cada uno de los item en la tabla excel, tomando como referencia el código único que aparece e la columna 5 del listbox.

Formulario:
Screenshot_1

Tabla de registros:

Screenshot_2


Adjunto mi archivo de trabajo para más compresión.
Agradezco su colaboración.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Modificar tabla Excel Segun Listado de ListBox

Publicado por Antoni Masana (498 intervenciones) el 13/09/2022 18:17:53
No se a adjuntado el libro de trabajo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Wilb

Modificar tabla Excel Segun Listado de ListBox

Publicado por Wilb (7 intervenciones) el 13/09/2022 18:45:55
Hola Antoni,
Las disculpas de caso...
Lo vuelvo a adjuntar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilb

Modificar tabla Excel Segun Listado de ListBox

Publicado por Wilb (7 intervenciones) el 13/09/2022 23:29:38
Hola...
He generado la solución con el siguiente código adaptado de una publicación en un blog: https://foro.todoexcel.com/threads/seleccionar-y-modificar-varias-celdas-con-listbox.47031/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim x As Long
Dim i As Long
With Me.ListBox1
x = .ListIndex
'MsgBox Application.WorksheetFunction.Match(Me.ListBox1.List(x, 4), Hoja2.Range("d:d"), 0)
 
 
'Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
For i = 0 To ListBox1.ListCount - 1
   'If ListBox1.Selected(i) Then
      Sheets("BD").Range("J" & ListBox1.List(i, 5)) = Me.ListBox1.List(i, 1)
      Sheets("BD").Range("K" & ListBox1.List(i, 5)) = Me.ListBox1.List(i, 2)
      Sheets("BD").Range("L" & ListBox1.List(i, 5)) = Me.ListBox1.List(i, 3)
      Sheets("BD").Range("M" & ListBox1.List(i, 5)) = Me.ListBox1.List(i, 0)
   'End If
Next
'CommandButton1_Click
End With
'Cmd_BuscarCod_Click
 
 
Application.ScreenUpdating = True
MsgBox "Datos Modificados", , "W"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Modificar tabla Excel Segun Listado de ListBox

Publicado por Antoni Masana (498 intervenciones) el 14/09/2022 17:30:29
He modificado res procedimientos.

1º - Añado columna al ListBox1 para guardar la fila de la hoja

1
2
3
4
5
6
Private Sub UserForm_Activate()
    With Frm_Entradas.ListBox1
        .ColumnCount = 6
        .ColumnWidths = " 70 PT; 30 PT; 50 PT;50 PT;70 PT; 0 PT"
    End With
End Sub

2º - Guardo la fila de los datos incluidos al ListBox1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Buscar_Detalle()
    Dim items As Long
    Dim i As Long
    Frm_Entradas.ListBox1.Clear
 
    items = Hoja2.Range("Tabla1").CurrentRegion.Rows.Count + 4
    For i = 5 To items
        If LCase(Hoja2.Cells(i, 4).Value) Like "*" & LCase(Frm_Entradas.TextBox1.Value) & "*" And _
           LCase(Hoja2.Cells(i, 1).Value) Like "*" & LCase("Detalle") & "*" Then
            Frm_Entradas.ListBox1.AddItem Hoja2.Cells(i, 13)
            Frm_Entradas.ListBox1.List(Frm_Entradas.ListBox1.ListCount - 1, 1) = Sheets("BD").Cells(i, 10)
            Frm_Entradas.ListBox1.List(Frm_Entradas.ListBox1.ListCount - 1, 2) = Sheets("BD").Cells(i, 11)
            Frm_Entradas.ListBox1.List(Frm_Entradas.ListBox1.ListCount - 1, 3) = Sheets("BD").Cells(i, 12)
            Frm_Entradas.ListBox1.List(Frm_Entradas.ListBox1.ListCount - 1, 4) = Sheets("BD").Cells(i, 4)
            Frm_Entradas.ListBox1.List(Frm_Entradas.ListBox1.ListCount - 1, 5) = i
        End If
    Next
End Sub

3º - Procedimiento para guardar los datos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Btn_ModificarDetalleIng_Click()
    Dim Ind As Long, FilaITEM As Long
 
    Call ControlaEntrada
    With Frm_Entradas.ListBox1
        For Ind = 0 To .ListCount - 1
            FilaITEM = .List(Ind, 5)
 
            Sheets("BD").Cells(FilaITEM, "J") = Val(.List(Ind, 1))
            Sheets("BD").Cells(FilaITEM, "K") = Val(.List(Ind, 2))
            Sheets("BD").Cells(FilaITEM, "L") = Val(.List(Ind, 3))
            Sheets("BD").Cells(FilaITEM, "M") = .List(Ind, 0)
        Next
    End With
    Call ControlaSalida
    ListBox1.Clear
    MsgBox "Datos Modificados", , "Wilbert"
End Sub

Adjunto libro modificado.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilb

Modificar tabla Excel Segun Listado de ListBox

Publicado por Wilb (7 intervenciones) el 15/09/2022 02:38:15
Genial Antoni,
Muy agradecido por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilb

Modificar tabla Excel Segun Listado de ListBox

Publicado por Wilb (7 intervenciones) el 29/09/2022 20:57:17
Hola Antoni,
Consulta, busco también que al procedimiento de modificar me permita actualizar agregando o eliminando items.
¿Es posible en el mismo procedimiento de modificar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar