Вы путаете функции листа и функции VBA. Вы слишком быстро прекратили разглагольствовать, хотя Word VBA - худшая версия.
С помощью пользовательского интерфейса я могу перейти в ячейку A1 и набрать "4apr12". Excel распознает это как дату, сохраняет значение как 41003 и устанавливает формат «dd-mmm-yy», который является стандартным форматом, наиболее близким к тому, что я набрал.
В качестве альтернативы, я мог бы набрать "41003", затем перейти в меню формата и выбрать или ввести формат даты по своему выбору.
Еще один вариант - набрать "= СЕГОДНЯ ()". Excel сохраняет значение как "= TODAY ()", но из-за начальных равных он оценивает его как выражение при вводе и отображает значение как стандартную дату (формат дд / мм / гг здесь в Великобритании) и повторно -оценивает выражение, когда рабочая книга открывается и сохраняется, и когда ей говорят сделать это с помощью параметров Рассчитать.
Функции VBA разные. Даже когда они делают одно и то же, они часто имеют разные имена. Ближайшим эквивалентом TODAY () является Now (). Эта функция возвращает текущую дату и время в виде числа. Целая часть - дни с 1 января 1900 года; дробная часть равна (количество секунд с полуночи) / (количество секунд в дне). Поэтому сегодня в полдень Now () вернул бы «41003,5». Это число; Я могу умножить его на два, вычесть 5000 или что-то еще.
С VBA я мог бы выполнить:
Range("A1").Value = "4apr12"
Excel распознает это как дату так же, как если бы я набрал ее из пользовательского интерфейса.
В качестве альтернативы, я мог бы выполнить:
Range("A1").Value = 41003.5
Это просто число, которое будет сохранено и отображено как 41003.5.
Если я хочу, чтобы оно отображалось как дата, я должен выполнить:
With Range("A1")
.Value = 41003.5
.NumberFormat = "dd mmm yy"
End With
Значение все еще сохраняется как 41003.5, но я сказал Excel показать его как 4 апреля 12.
Я могу выполнить:
Range("A1").Value = "=TODAY()"
Это обрабатывается так же, как если бы я набрал эту формулу из интерфейса.
Но предположим, я выполню:
With Range("A1")
.Value = Now()
.NumberFormat = "dd mmm yy"
End With
Now () возвращает текущую дату и время в виде числа. Excel хранит это как число, но отображает как дату, потому что я сказал это. Он никогда не будет переоценивать, потому что это простое числовое значение, а не выражение с функциями.
Я надеюсь, что это имеет смысл и поможет вам разобраться в различиях между функциями рабочего листа и функциями VBA. Excel и VBA - это как учиться водить машину. В первый раз, когда вы ЗНАЕТЕ, вы НИКОГДА не сможете делать все эти разные вещи одновременно. Тем не менее, через месяц или два, вы играете с педалями, рычагом переключения передач, колесом и индикатором, проверяя зеркало. Я не понимаю, почему люди думают, что похлопывание по голове и потирание живота так важны. Все, что я могу сказать, это то, что внезапно туман рассеется и Excel и VBA обретут смысл.