Hi Gordon,
For the first problem, try something based on:
Code:
Private Sub Calendar1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Text = Format(Calendar1.Value, "DDDD ") & Ordinal(Calendar1.Day) & Format(Calendar1.Value, " MMMM YYYY")
End Sub
Function Ordinal(Val As Integer) As String
Dim strOrd As String
If (Val Mod 100) < 11 Or (Val Mod 100) > 13 Then strOrd = Choose(Val Mod 10, "st", "nd", "rd") & ""
Ordinal = Val & IIf(strOrd = "", "th", strOrd)
End Function
As for the second problem, have you validated the date value that is being obtained from the workbook?