I have no problems with this:
Option Explicit
Private Sub TextBox1_AfterUpdate()
TextBox1 = Format(TextBox1, "dd mmm yyyy")
Range("A65536").End(xlUp).Offset(1, 0) = TextBox1
End Sub
After update, the value that's in textbox1 is formatted to the format specified in the first line (04/08/05 --> 04 Aug 2005) and shown in that format.
The next line tranfers that value to the s/s exactly as it's showing in the textbox (e.g. 04 Aug 2005).
However, if you use either of these forms of coding
Range("A65536").End(xlUp).Offset(1, 0).value = TextBox1.value[/vba]or[vba]Range("A65536").End(xlUp).Offset(1, 0).value = TextBox1.text
then the display in the cell will default to 08 04 05 as described by Tony.
HTH,
John
EDIT: I think you'll find this is because when it's not specified, Excel - by default - always assumes that you're referring to the Value.
So using "= TextBox1" means 'the value displayed in Textbox1'. But when we use "= TextBox1.Value" we're actually asking for 'the value of the value displayed in Textbox1', as this is showing as a date, Excel then uses its' default method for formatting dates to show you the value of this value.