Страницы: 1
RSS
Обновление значений в ячейке для преобразования типов данных
 
Здравствуйте!

В таблице имеются ячейки с датами в текстовом формате, например:
авг   21
10   авг 21
авг   21
Если делать руками, то я указываю в свойствах формат дд.мм.гггг.. Соответственно на выходе я должен получить:
01.08.2021
10.08.2021
01.08.2021
Но ячейка преобразуется в указанный формат, если только по ней дважды щелкнуть и нажать ввод.

Теперь мне нужно все это сделать в VBA. Но щелкнуть и нажать ввод там не получится. Поэтому я перезаписываю ячейку:
Код
Sub abc()

    Cells(8, 10).NumberFormat = "dd.mm.yyyy"
    Cells(8, 10).Calculate
    a = CDate(Cells(8, 10))
    Cells(8, 10).ClearContents
    Cells(8, 10).NumberFormat = "dd.mm.yyyy"
    Cells(8, 10) = a
    Cells(8, 10).Calculate
    
    
End Sub

Здесь чутка лишнего может написано, но суть одна: на выходе, в случае:
авг 21

я получаю:
21.08.2022
вместо 01.08.2021.

И я никак не могу понять, что нужно сделать, чтобы дата не переворачивалась, чтобы 21 в строке считалась не датой, а годом.
Хотя, если делать руками, как я это описал в начале, то получается нормально.

И, кстати, calculate не работает как двойной щелчок по ячейке и ввод.  
 
Без примера гадать сложно, но попробуйте так:
Код
Sub abc()
    Cells(8, 10).NumberFormat = "dd/mm/yyyy"
    Cells(8, 10).FormulaLocal = Cells(8, 10).FormulaLocal
End Sub

Цитата
Василий Тонкокшуров написал:
И, кстати, calculate не работает как двойной щелчок по ячейке и ввод.
и не должно, потому что Calculate - это пересчет формул, а не ввод данных.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, отлично! То, что нужно!
Никак не мог найти решение, как обновить эту ячейку!
Страницы: 1
Наверх