I've been looking at your problem and when I first tried it out I'd have agreed with Arvin - that there was nothing wrong with your query. However, after reading about your Input Mask there's actually two parts to the solution
I you adjust your statement to
IIf(Len([InputString])<=4,[InputString],Left([InputString],InStr([InputString]," ")-1)
you wouldn't get #Error even if you only have the first part of the postcode entered
However, the main problem is your Input Mask - you need to adjust it to read
LL09\ 0LL;0;_ instead of just LL09\ 0L
The CRUCIAL BIT here is the second argument (after the first semi-colon
This "specifies whether Microsoft Access stores the literal display characters in the table when you enter data. If you use 0 for this section, all literal display characters (for example, the parentheses in a phone number input mask) are stored with the value; if you enter 1 or leave this section blank, only characters typed into the control are stored.
(Quoted from Help on 'Input Mask Property'
The third argument (after the second semi-colon) simply provides a placeholder so that the user can see how much needs to be entered
The > at the beginning is ensures that all the postcode is displayed as CAPITAL
Hope that solves your problem
Regard
Tezba