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.