I have discovered the IsDate function in VBScript and VBA accepts as
valid dates of the form "23A", "16A" & "23P".
The reason it accepts them is it is viewing them as the times
"23:00:00", "16:00:00" & "23:00:00" on "Saturday, December 30, 1899".
This seems odd behaviour as I haven't seen any mention in
documentation of the function taking notice of time in the date
validation routine, and "23:00:00AM" isn't really a valid time anyway.
Demonstration (from Immediate window in Access):
print IsDate("16A")
True
print IsDate("23A")
True
print IsDate("32A")
False
print CDate("23A")
23:00:00
print IsDate("24P")
False
Just posting this for anybody else that might be mystified by the
issue in future.
--Phil.