Macro para copiar rango y escribir fecha, reemplazando los datos si la fecha ya existe.
Sub Botón155_Haga_clic_en()
Application.ScreenUpdating = False
Dim origen1 As Range
Dim origen2 As Range
Dim destino1 As Range
Dim destino2 As Range
Dim fecha As Date
Dim celda As Range
Dim hojaHistorico As Worksheet
Dim protegida As Boolean
' Desproteger la hoja "Histórico" si está protegida
Set hojaHistorico = ThisWorkbook.Sheets("Histórico")
If hojaHistorico.ProtectContents Then
protegida = True
hojaHistorico.Unprotect
End If
' Definir el rango de origen 1 en la hoja "Turnos"
Set origen1 = Sheets("Turnos").Range("I2:J16")
' Definir el rango de origen 2 en la hoja "Turnos"
Set origen2 = Sheets("Turnos").Range("K2:K16")
' Definir el rango de destino 1 en la hoja "Histórico"
Set destino1 = hojaHistorico.Range("F" & hojaHistorico.Rows.Count).End(xlUp).Offset(1)
' Definir el rango de destino 2 en la hoja "Histórico"
Set destino2 = hojaHistorico.Range("D" & hojaHistorico.Rows.Count).End(xlUp).Offset(1)
' Escribir la fecha actual en todas las celdas de la columna "B" correspondientes, reemplazando la fecha existente si ya existe
fecha = Date
For Each celda In destino1.Offset(0, -4).Resize(origen1.Rows.Count)
If IsDate(celda.Value) Then
celda.Value = fecha
Else
celda.Value = fecha
End If
Next celda
' Copiar y pegar los valores del rango 1
origen1. Copy
destino1. PasteSpecial xlPasteValues
' Copiar y pegar los valores del rango 2
origen2. Copy
destino2. PasteSpecial xlPasteValues
Range("A1").Select
' Limpiar el portapapeles
Application.CutCopyMode = False
Application.ScreenUpdating = True
' Volver a la hoja "Turnos"
Range("A1").Select
Sheets("Turnos").Select
' Volver a proteger la hoja "Histórico" si estaba protegida
If protegida Then
hojaHistorico.Protect
End If
End SubCon la anterior macro, pretendo copiar los datos que hay en el rango "I2:J16", también los datos del rango "K2:K16" y pegarlos en una hoja llamada "Histórico", en la siguiente celda vacía de la columna "F", los datos de "I2:J16" y en la siguiente celda vacía de la columna "D" de esa misma hoja, los datos del rango "K2:k16". Una vez esto, quiero que en la siguiente celda vacía de la columna "B", se copie la fecha del día de hoy, pero si por algún motivo la fecha del día de hoy, ya existe, ese rango debe ser reemplazado y no agregado en la siguiente celda vacía como está pasando en mi macro.
Espero contar con su valiosa colaboración para mejorar, optimizar la macro, hacerla más rápida y eficiente y lo más importante, lograr que no se sigan agregando valores con la misma fecha, sino que el rango donde ya esté la fecha de hoy, se reemplace.



