Como copiar y remplazar celdas con macros

Tengo una duda sobre excel y macros, lo que sucede es que tengo dos listas, ambas listas contienen cuatro columnas (B - E), con diferentes datos clientes, facturas, cantidad y numero de factura, bueno en la primer lista voy a hacer el vaciado de las facturas, cada ves que me paguen una factura deseo el llenar una quinta columna (F) con la palabra "pagada", y en el momento que la columna contenga la palabra pagada sea borrada de la primer lista y sea copiada la segunda lista y por su puesto que las celdas que están abajo de la que sera borrada se corran hacia arriba.

He intentado muchas cosas pero no logro que funcione

2

2 Respuestas

91.600 pts. No soy un super experto, pero en lo que pueda te ayudaré

Cada vez que pongas una factura pagada que pase a la otra lista con un botón, si no envíame una copia del libro para que lo haga.

Envíalo a [email protected]

2.080.540 pts. En mi sitio encontraran material de ayuda, ejemplos...

Si aún no lo resolviste, esta macro te servirá. Estoy trabajando con hojas 1 y 2, ajusta el nombre de la hoja2 a la de tu libro.

La macro se coloca en el Editor, seleccionando con doble clic el objeto HOJA 1 o la que tenga las facturas impagas.

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde

'solo se controlan cambios en col F
If Target.Column <> 6 Then Exit Sub
'no se ejecuta si se modifica un rango
If Target.Count > 1 Then Exit Sub
'se evalua contenido de la celda. Si es "pagada' se corta la fila y se copia en Hoja2
'se utiliza Ucase para comparar todo en mayúsc
If UCase(Target.Value) = "PAGADA" Then
'solo se copian las celdas de las 4 col
'se copian a la primer celda vacía según col B
Range("B" & Target.Row & ":E" & Target.Row).Cut Destination:=Sheets("Hoja2").Range("B" & Sheets("Hoja2").Range("B" & Rows.Count).End(xlUp).Row + 1)

'se eliminan las celdas copiadas, no la fila completa (ver Tip)
Range("B" & Target.Row & ":F" & Target.Row).Delete Shift:=xlUp

'opcional: posicionarse en alguna celda
Range("B7").Select
End If
End Sub

'Tip: para cortar la fila completa se utilizará esta instrucción:
'Range("B" & Target.Row).EntireRow.Delete

De todos modos comparto la idea de Antares de utilizar un botón en lugar del evento Change, por la posibilidad de que te equivoques al registrar un pago... pero esta es la macro que has solicitado.

Sdos y no olvides valorarla. Incluso si el tema ya está resuelto para darla por cerrada.

Te recuerdo que la consulta sigue abierta. Si el tema quedó resuelto no olvides valorar esta respuesta.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas