Похоже, что вы хотите сделать на самом деле процесс, состоящий из двух частей: преобразовать значение в ячейке (или диапазоне ячеек) в дату, а затем отобразить его как дату, а не просто преобразовать текстовое значениеэто похоже на дату для значения даты.
Если это так, то я бы порекомендовал изменить предложение Рему следующим образом (использование UsedRange может быть проблематично для листов, содержащих большие объемы данных):
Dim c As Range
For Each c In Selection.Cells
c.Value = CDate(c.Value)
c.NumberFormat = "m/d/yyyy"
Next c
Затем пользователю нужно будет выбрать ячейки, к которым следует применить форматирование, и запустить макрос;Звучит так, будто вы не хотите, чтобы это произошло, но я не уверен, что это возможно.
В зависимости от того, как вы хотите использовать макрос, вы можете добавить дополнительные проверки: например, вы можете применить форматирование только к непустым ячейкам, в настоящее время отформатированным как текст (c.Value <> "" and c.NumberFormat = "@"
).