Я схожу с ума по этому поводу.
Dim myDate As Date
Dim myString As String
myDate = #9/29/1992#
myString = myDate
Range("A1") = myDate 'output: 29/09/1992
Range("A2") = Year(myDate) 'output: 14/06/1905
Range("A3") = Right(myString, 4) 'output: 14/06/1905
Range("A4") = Format(myDate, "yyyy") 'output: 14/06/1905
Range("A5") = Format(myDate, "mm/dd/yyyy") 'output: 29/09/1992
Диапазон («A: A») отформатирован как «Короткая дата», потому что он содержит дату рождения (дд / мм / гггг) ряд предметов. Что происходит, так это то, что я вывожу 1992 в ячейку, отформатированную как Short Date, которая преобразует ее в 14/06/1905.
Проблема в том, что я загружаю весь диапазон в массиве, делаю некоторые модификаций. Иногда дата рождения правильная, иногда я рассчитываю приблизительный год рождения. Затем я вывожу измененный массив в мой диапазон. Это очень сложный код, и это самый простой и быстрый способ сделать это.
Но как мне отформатировать только те ячейки, у которых есть только год, в число / текст / что-нибудь, что сохраняет его в формате " гггг "?