Macro Excel actualización masiva de registros mostrados ListBox.

Tengo macro que me permite filtrar mediante un Userform y un listBox. Del cual me podrían apoyar para ver si se puede actualizar simultáneamente los registros mostrados en este listBox obviamente se actualizara con la misma información.

Les dejo la macro.

'Mostrar resultado en ListBox
Private Sub CommandButton5_Click()
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
Me.ListBox1.Clear
Columna = Me.cmbEncabezado.ListIndex
j = 1
Filas = Range("a1").CurrentRegion.Rows.Count
For i = 2 To Filas
    If LCase(Cells(i, j).Offset(0, CInt(Columna)).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
        Me.ListBox1.AddItem Cells(i, j)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, j).Offset(0, 4)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, j).Offset(0, 5)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Cells(i, j).Offset(0, 6)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Cells(i, j).Offset(0, 7)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Cells(i, j).Offset(0, 8)
        Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = Cells(i, j).Offset(0, 10)

    End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "CONTROL PANALPINA"
End Sub

Private Sub CommandButton3_Click()
If Me.ListBox1.ListIndex < 0 Then
        MsgBox "NO HA SELECCIONADO NINGUN REGISTRO", vbExclamation, "CONTROLPANALPINA"
    Else
        Actualizacion.Show
       ' Modificar.Show
    End If
End Sub

'Activar la celda del registro elegido
Private Sub ListBox1_Click()
Range("A2").Activate
Cuenta = Me.ListBox1.ListCount
Set Rango = Range("A1").CurrentRegion
For i = 0 To Cuenta - 1
    If Me.ListBox1.Selected(i) Then
        valor = Me.ListBox1.List(i)
        Rango.Find(What:=valor, LookAt:=xlWhole, After:=ActiveCell).Activate
    End If
Next i

1 respuesta

Respuesta
1

No entendí qué es lo que necesitas, puedes explicarlo con ejemplos o con imágenes.

Hola gracias por la atención y disculpa tal ves fui muy general, en la pantalla anexa tengo un formulario el cual me filtra una base y me muestra el resultado del filtro en un listBox, actualmente con el boton actualizar puedo abrir cada registros y actualizarlo por separado anexo pantalla.

lo que necesito es que con una sola instrucción me actualice por ejemplo en la primera imagen toda la columna (4) llamado documento que me coloque la fecha del día de hoy por mencionar un dato para cada uno de los registros mostrados en el listbox.

Te comparto el archivo.

http://1drv.ms/1STzKmu 

Aun esta en desarrollo pero ya esta la estructura.

Saludos y gracias.

¿Vas a poner algo en la columna GUIA?

Te pregunto porque al momento de seleccionar un registro en el listbox tienes esto:

For i = 0 To Cuenta - 1
    If Me.ListBox1.Selected(i) Then
        valor = Me.ListBox1.List(i)
        Rango.Find(What:=valor, LookAt:=xlWhole, After:=ActiveCell).Activate
    End If
Next i

Lo que haces es pasar el primer dato del listbox a la variable valor, el primer dato del listbox es el que tienes en la columna GUIA, pero como GUIA está en blanco, entonces valor siempre es blanco; después buscas valor en la hoja, pero como tienes blanco, entonces el cursor se posiciona siempre en la primera celda vacía que encuentra.


Te explico lo anterior, porque cuando filtras información, un registro que está en la fila 5 de la hoja, ahora puede estar en la fila 0 del listbox, entonces hay que buscar el registro del listbox en la hoja, pero tu búsqueda no está funcionando.

Si quieres filtrar y luego modificar todos los registros filtrados, entonces se tiene que buscar uno por uno en la hoja, una vez que lo encuentras ya le puedes modificar la fecha o lo que quieras.

Pero no sé cómo voy a buscar el dato.

Tu código lo está buscando por GUIA, pero no funciona.

En la columna "Documento", tienes registros duplicados así que tampoco podemos utilizar la columna "Documento" para buscar.

¿Tienes alguna otra columna que tenga valores únicos?

A mira sin problema la columna con valor único será "A" guía, solo que no esta llena en el momento como te comento se esta armando este proyecto.

For i = 0 To Cuenta - 1
    If Me.ListBox1.Selected(i) Then
        valor = Me.ListBox1.List(i)
        Rango.Find(What:=valor, LookAt:=xlWhole, After:=ActiveCell).Activate
    End If
Next i

Y si es correcto lo que mencionas ahora la cuestión es  que con la instrucción anterior  solo puedo seleccionar un registro y actualizar solo este, quisiera que se pueda seleccionar varios registros del listbox y mediante un botón u otro formulario actualice  como ejemplo la columna ("D" Stop) de  cada registro del listbox con un datos "x" que será el mismo para cada registro por ser actualización mutiregistro.

saludos.

Te anexo un botón para rellenar la columna Stop, según los registros que tengas filtrados. La columna Guía deberá estar lleno con el número de fila.

Private Sub CommandButton7_Click()
'Por.Dante Amor
    If Me.ListBox1.ListCount = 0 Then
        MsgBox "NO HAY REGISTROS FILTRADOS", vbExclamation, "CONTROLPANALPINA"
        Exit Sub
    End If
    'ejemplo para actualizar la columna STOP
    valor = "xyz"   'Esta dato puede ser de un textbox, por ejemplo valor = textbox50
    For i = 0 To ListBox1.ListCount - 1
        fila = ListBox1.List(i)
        Cells(fila, "D") = valor
    Next
End Sub

El código es un ejemplo, deberás adaptarlo a lo que necesites cuando sigas armando el proyecto.


Saludos. Dante Amor

Recuerda valorar la respuesta.

Te anexo el archivo para que veas el funcionamiento del botón "Rellenar", está en el formulario "frmBuscar2"

https://www.dropbox.com/s/62dwk7qawyhc1ok/Control%20panalpina%20dam.xlsm?dl=0 

Saludos. Dante Amor

Recuerda valorar la respuesta.

Excelente muchas gracias.

lo he implementado y funciona muy bien.

No muchas gracias a ti. me apoyaste mucho..

Saludos.

Para concluir entiendo que el valor único que en este caso es la guia lo adopta cada registro en listbox y al actualizar masivamente o retoma para poderlo realizar. }}saludos.

Así es, si borras o insertas registros debes actualizar la guía con el número de fila de excel.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas