The reason is really very simple -- "cheese" is 6 letters. Your sub only checks to invalidate 4, 5, and 7 letter words that aren't in your associated time format.
You start out assuming the format is TRUE, and then never prove that it's not with anything outside of those 3 possible combinations.
You probably need a:
ELSE
rtn = FALSE
before the END IF.
For ease of emphasis look at this:
Function IsCallTime
(possibleCallTimeString$
) rtn = TRUE
pCt$ = possibleCallTimeString$
IsCallTime = rtn
If length is 4, or 5, or 7.... then...
"cheese" is a length 6. It's not going to be in any of those IF statements, so it's going to stay TRUE as you set it beforehand.