Para esto que necesitas cuando presionas un botón basta puede ser de dos formas.
1ra. Asignando un espacio en blanco.
Textbox1 = “”
2da. Asignando la propiedad Empty. Cabe aclarar que es para variables tipo Variant
Textbox1 = Empty
El control TextBox almacena y devuelve datos solo en formato Texto - es ahí donde radica tu problema. Deberás transformar el texto en un dato numérico valido, por ejemplo si fuera fecha lo haces mediante la funcion CDate.
1) Si usas un control TextBox en un UserForm (Formulario de VBA) entonces usa el evento Exit del objeto TextBox, asi:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Range("A1") = CDate(TextBox1)
End Sub
Mejor aun crea un botón digamos Finalizar que pase todos los datos a sus respectivas celdas al cerrar el formulario. Para ello usa el evento Click del objeto CommandButton(Finalizar):
Private Sub Finalizar_Click()
Range("A1") = CDate(TextBox1)
Unload Me
End Sub
2) Si usas un control TextBox de la barra de herramientas Visual Basic en la hoja de Excel, entonces prueba usar el evento LostFocus del objeto TextBox, algo asi:
Private Sub TextBox1_LostFocus()
Range("A1") = CDate(TextBox1)
End Sub