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.