Macro para limpiar sin borrar fórmulas
Buenos días.
Seré un poco extenso pues quiero ser bien explicito.
Tengo una aplicación en Excel, la cual contiene las siguientes columnas:
A, B, C, D, E, F, G, H.
La misma puede tener filas innumerables.
Cuenta con las siguientes Hojas:
Reporte general, Reporte de cobros, Factura Pendiente.
La siguiente macro, dependiendo del status de las facturas las envía a su respectiva hoja.
Option Explicit
Dim rc As Long
Dim fp As Long
Sub Facturas()
Dim i As Long
Dim g As Long
Sheets("Reporte General de ventas").Select
Sheets(Array("Reporte General de ventas", "Reporte de Cobros", _
"Reporte Facturas Pendiente")).Select
Sheets("Reporte General de ventas").Activate
[A65536].Select
ActiveCell.FormulaR1C1 = "=COUNTA(R[-65535]C:R[-1]C)"
[a2].Select
Sheets("Reporte General de ventas").Select
g = [A65536].Value
[A65536].Clear
If g = 0 Then Exit Sub
Application.ScreenUpdating = False
For i = 2 To g
If Range("H" & i).Text = "Saldada" Then cop1 (i)
If Range("H" & i).Text = "Factura Pendiente" Then Rows(i).Select: Rows(i).Copy: cop2 (i)
DoEvents
Next
[a2].Select
Application.ScreenUpdating = True
MsgBox " *****LISTO*****"
MsgBox " *****RIMOLI ESPINAL*****"
End Sub
Sub cop1(fila As Long)
rc = Sheets("Reporte de Cobros").Range("A65536").Value
rc = (rc + 2)
Sheets("Reporte de Cobros"). Cells(rc, 1) = Sheets("Reporte General de ventas").Cells(fila, 2)
Sheets("Reporte de Cobros"). Cells(rc, 2) = Sheets("Reporte General de ventas").Cells(fila, 1)
Sheets("Reporte de Cobros"). Cells(rc, 3) = Sheets("Reporte General de ventas").Cells(fila, 3)
Sheets("Reporte de Cobros"). Cells(rc, 6) = Sheets("Reporte General de ventas").Cells(fila, 6)
Sheets("Reporte de Cobros"). Cells(rc, 7) = Sheets("Reporte General de ventas").Cells(fila, 7)
End Sub
Sub cop2(fila As Long)
fp = Sheets("Reporte Facturas Pendiente").Range("A65536").Value
fp = (fp + 2)
Sheets("Reporte Facturas Pendiente").Select
Sheets("Reporte Facturas Pendiente").Cells(fp, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Reporte General de ventas").Select
End Sub
Tengo otra macro que se encarga de limpiar la Hoja "Reporte de Cobros".
Sub Borrarrango()
Range("A3:G$100").Select 'ingresar las celdas necesarias
Selection.ClearContents
End Sub
Queasier:
1- Modificar esta macro para que solo me limpie los datos de la celda ya que en la columna C29, C30, F29, F30, G29, G30, tengo los totales y una fórmula que suma las columnas F y G.
2- Quiero lograr que al ejecutar la primera macro, la información definida en las celdas C29, C30, F29, F30, G29, G30, se despasen hacia abajo según la información cargada.
Gracias
Seré un poco extenso pues quiero ser bien explicito.
Tengo una aplicación en Excel, la cual contiene las siguientes columnas:
A, B, C, D, E, F, G, H.
La misma puede tener filas innumerables.
Cuenta con las siguientes Hojas:
Reporte general, Reporte de cobros, Factura Pendiente.
La siguiente macro, dependiendo del status de las facturas las envía a su respectiva hoja.
Option Explicit
Dim rc As Long
Dim fp As Long
Sub Facturas()
Dim i As Long
Dim g As Long
Sheets("Reporte General de ventas").Select
Sheets(Array("Reporte General de ventas", "Reporte de Cobros", _
"Reporte Facturas Pendiente")).Select
Sheets("Reporte General de ventas").Activate
[A65536].Select
ActiveCell.FormulaR1C1 = "=COUNTA(R[-65535]C:R[-1]C)"
[a2].Select
Sheets("Reporte General de ventas").Select
g = [A65536].Value
[A65536].Clear
If g = 0 Then Exit Sub
Application.ScreenUpdating = False
For i = 2 To g
If Range("H" & i).Text = "Saldada" Then cop1 (i)
If Range("H" & i).Text = "Factura Pendiente" Then Rows(i).Select: Rows(i).Copy: cop2 (i)
DoEvents
Next
[a2].Select
Application.ScreenUpdating = True
MsgBox " *****LISTO*****"
MsgBox " *****RIMOLI ESPINAL*****"
End Sub
Sub cop1(fila As Long)
rc = Sheets("Reporte de Cobros").Range("A65536").Value
rc = (rc + 2)
Sheets("Reporte de Cobros"). Cells(rc, 1) = Sheets("Reporte General de ventas").Cells(fila, 2)
Sheets("Reporte de Cobros"). Cells(rc, 2) = Sheets("Reporte General de ventas").Cells(fila, 1)
Sheets("Reporte de Cobros"). Cells(rc, 3) = Sheets("Reporte General de ventas").Cells(fila, 3)
Sheets("Reporte de Cobros"). Cells(rc, 6) = Sheets("Reporte General de ventas").Cells(fila, 6)
Sheets("Reporte de Cobros"). Cells(rc, 7) = Sheets("Reporte General de ventas").Cells(fila, 7)
End Sub
Sub cop2(fila As Long)
fp = Sheets("Reporte Facturas Pendiente").Range("A65536").Value
fp = (fp + 2)
Sheets("Reporte Facturas Pendiente").Select
Sheets("Reporte Facturas Pendiente").Cells(fp, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Reporte General de ventas").Select
End Sub
Tengo otra macro que se encarga de limpiar la Hoja "Reporte de Cobros".
Sub Borrarrango()
Range("A3:G$100").Select 'ingresar las celdas necesarias
Selection.ClearContents
End Sub
Queasier:
1- Modificar esta macro para que solo me limpie los datos de la celda ya que en la columna C29, C30, F29, F30, G29, G30, tengo los totales y una fórmula que suma las columnas F y G.
2- Quiero lograr que al ejecutar la primera macro, la información definida en las celdas C29, C30, F29, F30, G29, G30, se despasen hacia abajo según la información cargada.
Gracias
1 Respuesta
Respuesta de Elsa Matilde
1