Copiar si las celdas tienen formato de fechas

Buen a dia a tod@s, agradezco de antemano su valiosa aporte al conocimiento para la comunidad entera.

Tengo una macro que me proporcionaron en este foro, lo que hace es copiar las fechas que tengo en la Columna "D7" y en la "E7" de la Hoja "DATO" a la primer celda vacía de las columna "A" de la Hoja "HIST", me funciona perfecto, esta macro la tengo en un modulo.

Hoy deseo que antes de copiar los datos a la Hoja "HIST" la macro evalúe las columnas "D7" y "E7" de la Hoja "DATO" , verifique si estas columnas son fechas, si eso es correcto que copie la información, si no es asi, es decir que si estas columnas tienen un texto entonces no ejecute la macro.

La macro la tengo en un modulo diseñada de la siguiente manera:

Sub Respaldo()
'por luismondelo
Sheets("dato").Select
Range("d7:e7").Copy
Sheets("hist").Select
Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Sheets("DATO").Select Range("d7").Select
End Sub

He intentado condicionarla la macro agregando la siguiente instrucción IsDate(Range("D7")) = True Then, PERO NO ME FUNCIONA

MACRO CON NUEVA INSTRUCCIÓN

Sub Respaldo()
If IsDate(Range("D7")) = True Then
'por luismondelo
Sheets("dato").Select
Range("d7:e7").Copy
Sheets("hist").Select
Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Sheets("DATO").Select Range("d7").Select
Else:
End If
End Sub

Expertos me podrían echar una manita, me sera de gran ayuda, MIL GRACIAS.

1 respuesta

Respuesta
1

¿Notarás qué no funciona y siempre te lo copia verdad?

Es porque una vez que hemos puesto la fecha una vez, esa celda se queda siempre con formato de fecha por lo que el formato siempre es válido para la macro.

Quizás debieras montar otro examen para verificar el dato.

De todas formas la macro quedaría así:

Sub Respaldo()
'por luismondelo
If Not IsDate(Range("d7")) Or Not IsDate(Range("e7")) Then
MsgBox "error, no hay formato de fecha en las dos celdas"
Exit Sub
End If
Sheets("dato").Select
Range("d7:e7").Copy
Sheets("hist").Select
Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Sheets("DATO").Select Range("d7").Select
End Sub

recuerda finalizar la consulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas