Цитата |
---|
написал: Как можно исправить без изменения формата ячеек |
никак, если Вам нужна именно дата в ячейках, а не число или текст.
Если используются макросы - почему бы не использовать их для установки нужного формата? Что мешает это сделать? Например, можно в модуль листа записать такую обработку(срабатывает при каждом изменении листа):
Код |
---|
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rc As Range
On Error Resume Next
For Each rc In Target
If InStr(1, rc.Formula, "=ИзвлечьДатуДокумента1(", 1) > 0 Then
rc.NumberFormat = "dd.MM.yyyy"
End If
Next
End Sub |
Конечно, скорее всего нужны доп.проверки, чтобы лишнего не делать. Но я показал лишь пример без понимания, подойдет ли такой подход или нет.
И да, функция тогда должна выглядеть так(т.е. возвращать именно дату):
Код |
---|
Public Function ИзвлечьДатуДокумента1(Text As String) As Date
ИзвлечьДатуДокумента1 = CDate(MyReg(Text, "\d{2}\.\d+\.\d+"))
End Function |
Накидывать сюда формат через VBA.Format нет смысла. К тому же, если делать через Format, на некоторых ПК и вовсе будет ошибка, если формат даты в локализации отличается от "ДД.ММ.ГГГГ".