Copiar datos a otra hoja sin seleccionarla

Tengo una macro que copia unos datos de una hoja donde diligencio una nómina, la hoja donde registro los datos se llama "PRIM QUINC", y algunos datos de dicha hoja los copio en otra que me gurada los totales del mes, la hoja a donde se copian los datos se llama "MENSUAL"; la macro es la siguiente:

Sub Guarda_PrimQuinc
Application.ScreenUpdating = False
'
Application.Calculation = xlCalculationManual
Sheets("MENSUAL").Select 'hoja donde se guardarán los datos
ActiveSheet.Unprotect "XXX"
libre = ActiveSheet.Range("A1048576").End(xlUp).Row + 1 'selecciono la 'ultima fila
'PRIM QUINC es la hoja donde están los datos que se copiarán
Range("A" & libre) = Sheets("PRIM QUINC").Range("E4") 'FECHA
Range("B" & libre) = Sheets("PRIM QUINC").Range("F3") 'NRO REGISTRO
Range("C" & libre) = Sheets("PRIM QUINC").Range("D74") 'TOTAL GRAL
Range("A" & libre).Select
'al primer dato copiado le coloco formato fecha
Selection.NumberFormat = "dd/mm/yyyy;@"
'al tercer dato copiado le coloco el formato de moneda
Range("C" & libre & ":I" & libre).Select
Selection.Style = "Currency"
Selection.NumberFormat = "_-$* #,##0.0_-;-$* #,##0.0_-;_-$* ""-""??_-;_-@_-"
Selection.NumberFormat = "_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"
Range("A" & libre).Select
ActiveSheet.Protect ("XXX"), AllowFiltering:=True
Sheets("MENSUAL").Select
Range("E4").Select
Application.Calculation = xlCalculationAutomatic
End Sub

Quiero saber cómo podría modificar la macro para que al guardar los datos no tenga que seleccionar la hoja "MENSUAL", sino que los datos se copien en dicha hoja sin ir a seleccionarla en la instrucción.

2 respuestas

Respuesta
2

Hay dos formas una tu macro modificada y otra una macro más corta tu eliges, en ambos casos la macro en cualquier hoja que este solo trabaja con la hoja mensual y con la hoja prim quinc.

Sub Guarda_PrimQuinc()
Application.ScreenUpdating = False
'
Application.Calculation = xlCalculationManual
Set H2 = Worksheets("MENSUAL") 'hoja donde se guardarán los datos
Set H1 = Worksheets("PRIM QUINC")
H2.Unprotect "XXX"
libre = H2.Range("A1048576").End(xlUp).Row + 1 'selecciono la 'ultima fila
'PRIM QUINC es la hoja donde están los datos que se copiarán
H2.Range("A" & libre) = H1.Range("E4") 'FECHA
H2.Range("B" & libre) = H1.Range("F3") 'NRO REGISTRO
H2.Range("C" & libre) = H1.Range("D74") 'TOTAL GRAL
'al primer dato copiado le coloco formato fecha
H2.Range("A" & libre).NumberFormat = "dd/mm/yyyy;@"
'al tercer dato copiado le coloco el formato de moneda
H2.Range("C" & libre).Style = "Currency"
H2.Range("C" & libre).NumberFormat = "_-$* #,##0.0_-;-$* #,##0.0_-;_-$* ""-""??_-;_-@_-"
H2.Range("C" & libre).NumberFormat = "_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"
H2.Protect ("XXX"), AllowFiltering:=True
Application.Calculation = xlCalculationAutomatic
End Sub
'
'
Sub COPIAR_DATOS()
Set H1 = Worksheets("PRIM QUINC")
Set H2 = Worksheets("MENSUAL")
H2.Unprotect "XXX"
Set DESTINO = H2.Range("A2").CurrentRegion
With DESTINO
    F = .Rows.Count
    With .Cells(F + 1, 1)
        .Value = H1.Range("E4")
        .NumberFormat = "dd/mm/yyyy;@"
    End With
    .Cells(F + 1, 2) = H1.Range("F3")
    With .Cells(F + 1, 3)
        .Value = H1.Range("D74")
        .Style = "Currency"
        .NumberFormat = "_-$* #,##0.0_-;-$* #,##0.0_-;_-$* ""-""??_-;_-@_-"
        .NumberFormat = "_-$* #,##0_-;-$* #,##0_-;_-$* ""-""??_-;_-@_-"
    End With
    H2.Protect ("XXX"), AllowFiltering:=True
End With
Set DESTINO = Nothing
End Sub
Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas