Borrar celda automáticamente el día 01 de cada mes

¿Es posible programar excel para que borre una celda el día 1 de cada mes?

A lo mejor hay otra solución para lo que necesito.

Quiero que el gráfico creado, empiece a principios del mes para ver el progreso de cada mes.

2 respuestas

Respuesta
5

- Entra al Editor (con teclas ALT y F11) y selecciona con doble clic el objeto ThisWorkbook (o Este Libro)

- Allí copia estas instrucciones:

Private Sub Workbook_Open()
'x Elsamatilde
'si es día 1 del mes se borra una celda
If Day(Date) = 1 Then Call limpia_Celda
End Sub

- Inserta un módulo y allí copia esta otra macro. Primero solicita confirmación para no borrar la celda en otras aperturas durante el día 1, solo la 1era vez:

Sub limpia_Celda()
'x Elsamatilde
'solicitar confirmación
sino = MsgBox("Es día 1. ¿Deseas limpiar la celda de inicio?", vbCritical + vbYesNo, "Confirmar")
If sino = vbYes Then
    'borra celda A1 de Hoja1 'ajustar
    Sheets("Hoja1").[A1] = ""
End If
End Sub

Debes ajustar la referencia de la celda, en mi ejemplo A1 de Hoja1.

PD) Puedes crearte un usuario con nombre de fantasía, en lugar de aparecer como anónimo. Así podremos hacer un mejor seguimiento de tus conocimientos, necesidades y acercarte respuestas más precisas.

Puedo ver que has recibido 1 respuesta y no la cerraste aún (no la valoraste).

Sdos y no olvides valorar las respuestas recibidas.

¡Gracias!

Lo intentaré, espero que me salga bien. 

Perfecto! Te debo un café.

Un detalle, como hago para que me aparezca el mensaje solo una ves en todo el día?

Gracias!

Mejor dicho. Que borre la celda una ves en todo el día.

Comprendido. Ya te ajustare el código.

Sdos!

Con este cambio, el mensaje aparecerá cada vez que abras el libro el día 1 hasta que decidas 'borrar' la celda.

En ese momento además de borrar la celda se guardará el nro de mes en alguna auxiliar (en mi ejemplo utilicé AA1 de la hoja1).

Mientras no decidas borrarla seguirá apareciendo el mensaje:

Sub limpia_Celda()
'x Elsamatilde
'solicitar confirmación si es la 1er apertura del día 1
If Month(Date) = Sheets("Hoja1").[AA1] Then Exit Sub
sino = MsgBox("Es día 1. ¿Deseas limpiar la celda de inicio?", vbCritical + vbYesNo, "Confirmar")
If sino = vbYes Then
    'borra celda A1 de Hoja1 'ajustar
    Sheets("Hoja1").[A1] = ""
    'marca celda auxiliar para no repetir el mensaje
    Sheets("Hoja1").[AA1] = Month(Date)
End If
End Sub

Sdos!

Ok Elsa, ya no invito al café, tiene que ser flores y bombones.

¡Gracias! 

Pero prefiero que mejores tu valoración a mi respuesta (de Buena a Excelente) porque creo que así corresponde, ¿no te parece?

Sdos!

Hecho.

¡Gracias! 

Cuando me de una vuelta por España reclamaré las flores, bombones y café, jajaja. Por ahora está bien así.

Sdos!

Respuesta
2

Supongo que tendrás una lista similar a esta para graficar, la macro va recorriendo las fechas y borra el dato de la columna B si la fecha es 1 de mes.

y esta es la macro.

Sub borrar_1dia()
Set datos = Range("a1").CurrentRegion
With datos
    For i = 1 To .Rows.Count
        dia = Day(.Cells(i, 1))
            If dia = 1 Then .Cells(i, 2) = Empty
    Next i
End With
Set datos = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas