EXCEL VBA Timevalue format (hh:mm am/pm)

calendar_today Asked May 22, 2013
thumb_up 14 upvotes
history Updated April 14, 2026

Direct Answer

Change your format string to include the indicator for AM/PM (based on the VBA Format function documentation – see the heading User-Defined Date/Time Formats (Format Function)…. This is an advisory response with reference links, ranked #50th of 95 by community upvote score, from 2013.


The Problem (Q-score 2, ranked #50th of 95 in the VBA Core archive)

The scenario as originally posted in 2013

How do I set the format for timevalue for 12-hour clock without second. For example: hh:mm AM/PM. Right now I’m using Format(TimeValue(Now), "hh:mm") but it wont display AM/PM.

Thanks in advance.

Why community consensus is tight on this one

Across 95 VBA Core entries in the archive, the accepted answer here holds solid answer (above median) status — meaning voters are unusually aligned on the right fix.


The Verified Solution — solid answer (above median) (+14)

Advisory answer — community consensus with reference links

Note: the verified answer below is a reference / advisory response rather than a copy-ready snippet.

Change your format string to include the indicator for AM/PM (based on the VBA Format function documentation – see the heading User-Defined Date/Time Formats (Format Function) roughly halfway down the page – there’s no anchor to link to directly):

Format(TimeValue(Now), 'hh:mm AM/PM')

Valid choices for different displays of AM/PM values are:

AM/PM

Use the 12-hour clock and display an uppercase AM with any hour before noon; display an uppercase PM with any hour between noon and 11:59 P.M.

am/pm

Use the 12-hour clock and display a lowercase AM with any hour before noon; display a lowercase PM with any hour between noon and 11:59 P.M.

A/P

Use the 12-hour clock and display an uppercase A with any hour before noon; display an uppercase P with any hour between noon and 11:59 P.M.

a/p

Use the 12-hour clock and display a lowercase A with any hour before noon; display a lowercase P with any hour between noon and 11:59 P.M.

AMPM
Use the 12-hour clock and display the AM string literal as defined by your system with any hour before noon; display the PM string literal as defined by your system with any hour between noon and 11:59 P.M. AMPM can be either uppercase or lowercase, but the case of the string displayed matches the string as defined by your system settings. The default format is AM/PM.


When to Use It — classic (2013–2016)

Ranked #50th in its category — specialized fit

This pattern sits in the 89% tail relative to the top answer. Reach for it when your scenario closely matches the question title; otherwise browse the VBA Core archive for a higher-consensus alternative.

What changed between 2013 and 2026

The answer is 13 years old. The VBA Core object model has been stable across Office 2013, 2016, 2019, 2021, 365, and 2024/2026 LTSC, so the pattern still compiles. Changes that might affect you: 64-bit API declarations (use PtrSafe), blocked macros in downloaded files (Mark-of-the-Web), and the shift toward Office Scripts for web-first workflows.

help
Frequently Asked Questions

Is this above-median answer still worth copying?
expand_more

Answer score +14 vs the VBA Core archive median ~4; this entry is solid. The score plus 2 supporting upvotes on the question itself (+2) means the asker and 13 subsequent voters all validated the approach.

This answer links out — what are the reference links worth following?
expand_more

Read the first external link for the canonical reference, then search this archive for a top-10 entry in the same category — advisory answers are best paired with a ranked code snippet to close the loop.

Published around 2013 — what’s changed since?
expand_more

Published 2013, which is 13 year(s) before today’s Office 2026 build. The VBA Core object model has had no breaking changes in that window. Three things to re-test: (1) blocked macros on downloaded files (Mark-of-the-Web), (2) 64-bit API declarations (PtrSafe, LongPtr), (3) any shift toward Office Scripts for web scenarios.

Which VBA Core pattern ranks just above this one at #49?
expand_more

The pattern one rank above is “Equivalent of "Dim As String * 1" VB6 to VB.NET”. If your use case overlaps, compare both before committing.

Data source: Community-verified Q&A snapshot. Q-score 2, Answer-score 14, original post 2013, ranked #50th of 95 in the VBA Core archive. Last regenerated April 14, 2026.

vba