CDate(TextBox2.Value) convertit en date le contenu de la TextBox2 et cela provoque l'erreur 13 si la TextBox2 est vide ou si la valeur contenue n'est pas convertible en date (une chaîne de texte par exemple). Tu peux utiliser On Error Resume Next qui signifie qu'en cas d'erreur il faut passer à la ligne suivante pour eviter ce problème :
On Error Resume Next
With Sheets(WSName)
.Range('C' & L).Value = CDate(TextBox2.Value)