Format() returns a string, and when the WS gets it it tries to help by making it into number using whatever the NumberFormat is
Try something like this and see if it helps
Sheet1.Range("A1").NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)" Sheet1.Range("A1").Value = Cost.Value