· Workpaper Management · 3 min read

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.

Share:

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.

One macro recipe every two weeks. Unsubscribe anytime.

E

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.

More about me →