Bulk Date Updater: Change the Period-End Date Across Every Sheet at Once
One macro that checks A3 on every sheet for a date and replaces it with your new period-end. No more clicking through 40 tabs to update the same cell.
Table of Contents
TL;DR: This macro scans every sheet in your workbook, checks whether A3 contains a date, and replaces it with whatever period-end you specify. Four lines of logic, forty tabs updated.
The Problem
You’ve built a 40-tab workpaper file for a quarterly review client. Every sheet uses A3 for the period-end date — it feeds into headers, lookup formulas, and cross-references. The quarter just changed. Now you need to update A3 on every single sheet. You could do it manually in ten minutes. Or you could run this once and be done in half a second.
#Prerequisites & Setup
What you’ll need:
- Excel 2016+ (desktop)
- A workbook where A3 on every sheet (or most sheets) contains a date
- Dates stored as actual Excel dates, not text strings that look like dates
Limitations:
- Only changes cells that already contain a date — ignores blanks, text, and numbers
- Only checks cell A3 — change the cell reference in the code if your workpapers use a different cell
- Does not skip hidden or protected sheets — unprotect or unhide those first
#The Macro
Option Explicit
Sub BulkUpdatePeriodEnd()
' ── Bulk Date Updater ──────────────────────────────
' Checks cell A3 on every worksheet. If it contains a
' date, replaces it with the date specified below.
' Skips non-date cells (blanks, text, formulas that
' don't return a date) without touching them.
'
' Change the constant to your new period-end date.
' ────────────────────────────────────────────────────
Const NEW_DATE As Date = #12/31/2026#
Dim ws As Worksheet
Dim changed As Long
changed = 0
For Each ws In ThisWorkbook.Worksheets
If IsDate(ws.Range("A3").Value) Then
ws.Range("A3").Value = NEW_DATE
changed = changed + 1
End If
Next ws
If changed > 0 Then
MsgBox changed & " sheet(s) updated to " _
& Format(NEW_DATE, "mm/dd/yyyy") & ".", _
vbInformation, "Done"
Else
MsgBox "No date values found in A3 on any sheet.", _
vbExclamation, "Nothing Updated"
End If
End Sub
#How It Works
#Why IsDate instead of checking cell format
A cell formatted as Date can still contain text. A cell formatted as General can
contain a perfectly valid date. The IsDate function tests the actual value, not
the format, so you catch real dates regardless of how the cell is displayed.
If IsDate(ws.Range("A3").Value) Then
#Why a message box at the end
Silent macros are dangerous. You want confirmation of how many sheets were
touched — a count of 38 tells you two sheets were skipped (maybe they had a
blank or a formula error). That’s information you want before you close the
workbook and consider the job done.
#Adapt It
Get the next macro in your inbox
One copy-paste-ready macro recipe every two weeks. No spam, no VBA theory — just automation that saves you time.
Excel Macro Guy
Excel enthusiast · married to an accountant
I love Excel. My wife is an accountant. Every busy season, I watch her wrestle with workpapers and think "a macro could do that in half a second." So I build them. She tests them on real client data. What survives gets published here.