Remkomplekty.ru

IT Новости из мира ПК
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel формат даты

Урок 15 по VBA — функции работы с датой и временем

И так, в этой по своей природе унылой публикации я кратко рассмотрю vba функции даты и времени, которые позволяют получить или установить параметры даты и времени, задать таймер выполнения заданного блока кода или сценария в целом. Также в конце статьи будет затронута функция vba языка format. Которая отвечает за форматирование данных.

Функции VBA даты и времени

Date () – позволяет получить значение текущей даты, установленной в системе.

Time () – вернет установленное в системе время

Now () – комбинированная функция, так как она позволяет получить значение системной даты и времени.

DateAdd (интервал, число, дата) – позволяет прибавить к заданной дате (параметр “дата”) указанное количество лет, кварталов, месяцев или секунд. На выходе мы получим следующее значение: дата + (число * интервал).

DateDiff (интервал, дата, дата2) – позволяет получить разницу между заданными датами, например. В годах, месяцах и так далее, разница определяется параметром “интервал”.

DatePart (интервал, дата) – позволяет получить заданную часть даты, например, только значение года, месяца или дня недели. Результат возврата регулируется параметром “интервал”.

DateSerial (год, месяц, день) – данная функция vba принимает три числовые значения, по которым возвращается дата.

DateValue (строка) – аналог предыдущей функции, но тут в качестве параметра мы передаем не числа. А строковое значение, на основе которого будет возвращаться дата, vba работа с датами.

Day (дата) – позволяет получить значение текущего дня (если отсутствует параметр “дата”) или для заданной даты.

Year (дата) – позволяет получить значение текущего года (если отсутствует параметр “дата”) или для заданной даты.

Month (дата) – позволяет получить значение текущего месяца (если отсутствует параметр “дата”) или для заданной даты.

Weekday (дата) – позволяет получить значение текущей недели (если отсутствует параметр “дата”) или для заданной даты.

Hour (время) – позволяет получить текущее значение часов (если отсутствует параметр “время”) или для заданного времени, vba дата и время.

Minute (время) – позволяет получить текущее значение минут (если отсутствует параметр “время”) или для заданного времени.

Second (время) – позволяет получить текущее значение секунд (если отсутствует параметр “время”) или для заданного времени.

Timer () – удобная функция для определения промежутка времени, ушедшего на выполнение заданного блока кода. Сама функция возвращает целое количество секунд, которые прошли начиная с полуночи.

TimeSerial (часы, минуты, секунды) – позволяет получить время, заданное тремя параметрами

TimeValue (строка) – работает аналогично предыдущей функции, но для получения времени, передается не целое значение, а строковое.

MonthName (числовое значение) – VBA функция позволяет получить название месяца, в качестве параметра указываем номер месяца.

WeekDay (дата) — задает возвращает имя месяца словами по его номеру. Возвращаемое значение зависит от региональных настроек. Если они русские, то вернется русское название месяца.

Помимо указанных выше vba функций даты и времени, можно использовать и такие вариации:

Date (дата) – позволяет задать системную дату

Time (время) – позволяет задать системное время.

В приведенных выше функциях даты и времени vba языка используется параметр “интервал”, который может принимать следующие значения:

VBA функции форматирование данных

Для форматирования данных в языке VBA используется функция Format , которая позволяет сформировать данные любого встроенного типа, используя заданный образец. Общий синтаксис функции format:

Format (Выражение, [“формат”, [первый день недели, [первая неделя года]]]) – тут параметр “выражение” является любым допустимым значением. Формат – необязательный параметр, который задает формат данных, должен заключаться в кавычки. Остальные два параметра также являются необязательными, и задают день недели, который нужно считать первым, и первую неделю года.

Параметр формат может принимать следующие значения:

  • General Number – числовое значение без выделения разрядов тысяч, например, 12150,2003
  • Currency – денежный формат, выделяются тысячные разряды и два знака после запятой, например, 255,33р.
  • Fixed – числовое значение без выделения разрядов тысяч и двумя знаками после запятой, например, 22439,12.
  • Standart – числовое значение, которое умножается на 100, при этом, остаются два знака после запятой и символ процента, например, 55,63%.
  • Scientific – числовой формат для научных вычисление, например, 5,23Е+03
  • Yes/No – данный параметр определяет, что функция вернет “Да” если форматированное выражение содержит строку Нет, или ненулевое значение и “Нет” в противном случае.
  • True/False – аналог предыдущего параметра, но для строк “Истина” и “Ложь”.
  • On/Off – для строк вида “Вкл” и “Выкл”.
  • General Date – форматирование выражения в соответствии с установленными в системе стандартами даты и времени, например, 10.11.02 12:25:50
  • Long Date – вывод полного формата даты, в зависимости от установок в системе, например, 10 октября 2013 г, vba функции даты.
  • Medium Date – средний формат дат, например, 10-Окт-13.
  • Short Date – короткий вывод формата даты, например, 10.10.13.
  • Long Time – вывод в формате времени (часы, минуты, секунды), например, 12:20:40.
  • Medium Time – 12 часовой формат времени (часы, минуты), например, 05:30.
  • Short Time — 24 часовой формат времени (часы, минуты), например, 17:30.

Спасибо за внимание. Автор блога Владимир Баталий

Функция Format

Возвращает значение типа Variant (String), которое содержит выражение, отформатированное в соответствии с указаниями, содержащимися в выражении формата.

Предупреждение Возникла проблема с использованием этой функции. Последний понедельник в некоторых годовых годах может быть возвращен в неделю 53, когда она должна быть неделей 1. Дополнительные сведения и временное решение можно найти в статье функции Format и datepart могут возвращать неверный номер недели для последнего месяца в году.

Format( выражение [, формат ] [, первый_день_недели ] [, первая_неделя_года ] )

Функция Format имеет следующие аргументы:

Обязательный аргумент. Любое допустимое выражение.

Необязательный. Допустимое именованное или определяемое пользователем выражение формата.

Необязательный. Константа, задающая первый день недели.

Необязательный аргумент. Константа, задающая первую неделю года.

Аргумент Format может использовать разнообразные параметры, в зависимости от типа данных аргумента Expression . Дополнительные сведения см. в статьях, указанных в таблице ниже.

Аргумент первый_день_недели может принимать следующие значения:

Используются параметры API NLS.

Воскресенье (по умолчанию)

Аргумент первая_неделя_года может принимать следующие значения:

Используются параметры API NLS.

Начинается с недели, на которую приходится 1 января (по умолчанию).

Первой неделей считается та, которая содержит хотя бы четыре дня нового года.

Первой неделей считается первая полная неделя года.

Используйте стандартные именованные числовые форматы или создайте пользовательские числовые форматы.

Значения даты и времени

Используйте стандартные именованные форматы даты и времени или создайте пользовательские форматы даты и времени.

Серийные номера даты и времени

Используйте форматы даты и времени или числовые форматы.

Создайте пользовательские форматы строк.

Если вы попытаетесь отформатировать число без задания формата, функция Format будет работать аналогично функции Str, хотя и с поддержкой международных форматов. Однако положительные числа, отформатированные как строки с использованием функции Format, не будут включать начальный пробел, зарезервированный для знака значения; с другой стороны, в случае преобразования с помощью функции Str начальный пробел сохранится.

При форматировании нелокализованных числовых строк следует использовать определяемый пользователем числовой формат, чтобы обеспечить получение желаемых результатов.

Примечание: Если для свойства Calendar задано значение Gregorian, а для аргумента формат указано форматирование даты, предоставленное выражение должно иметь тип Gregorian. Если для свойства Calendar в Visual Basic задано значение Hijri, выражение должно иметь тип Hijri.

Если используется григорианский календарь, значение символов выражения формат не изменяется. Если используется календарь Хиджра, все символы формата даты (например, dddd, mmmm, yyyy) имеют то же значение, но применяются к календарю Хиджра. Символы формата остаются английскими; символы, отображаемые в текстовом виде (например, AM и PM), выводят строку (на английском или арабском языке), связанную с этим символом. Диапазон некоторых символов при использовании календаря Хиджра изменяется.

Читать еще:  Vba excel поиск

Отображает полное название месяца (у названий месяцев Хиджра нет сокращений).

Примеры

Использование функции Format в выражении. Функцию Format можно использовать в любых выражениях. Можно, например, использовать ее в запросе в виде части псевдонима поля или в свойстве Данные текстового поля в форме или отчете. Ниже представлен пример выражения, которое можно использовать в свойстве отчета Фильтр, чтобы вывести только записи, относящиеся к прошлой неделе.

В этом примере в источнике записей отчета есть поле «Дата», содержащее дату изменения каждой конкретной записи и использующееся в отчете. Во время выполнения отчета результаты фильтруются и отображаются только те записи, в которых значение недели в поле «Дата» (Format([Дата],»ww»)) равно прошлой неделе (Format(Now(),»ww»)-1).

Использование функции Format в коде VBA

Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.

В данном примере показаны различные варианты использования функции Format для форматирования значений с помощью предварительно заданных форматов и форматов, определенных пользователем. Для разделителя даты (/), разделителя времени (:) и литералов AM/ PM фактические отформатированные выходные данные, отображаемые системой, зависят от ее региональных параметров. В среде разработки для отображения времени и даты используется краткий формат времени и даты, заданный в региональных параметрах программы. При отображении в работающей программе применяется краткий формат даты и времени из региональных параметров системы, который может отличаться от региональных параметров программы. В этом примере используется локаль «Английский (США)».

MyTime и MyDate отображаются в среде разработки с использованием текущих системных параметров для краткого формата времени и даты.

Использование функции Format с пустыми строками

В Microsoft Access версии 2,0 и более ранних версиях можно использовать функцию Format , чтобы возвращать одно значение для пустая строка, а другое — для значения. Например, вы можете использовать выражение формата, например следующее, с функцией Format , чтобы вернуть соответствующее строковое значение из кода:

В Microsoft Access 97 и более поздних версиях необходимо отдельно проверить, не равно ли значение Null, а затем вернуть соответствующее значение с учетом результата. Например, можно использовать функцию IIf в выражении с функцией Format:

varX = IIf(IsNull(varStrX),»Null», Format(varStrX, «@;ZLS»))

Данное изменение применимо только тогда, когда функция Format используется для форматирования строк в зависимости от того, пустая ли это строка или строка со значением Null. Другие выражения форматирования, используемые с функцией Format, действуют так же, как в предыдущих версиях.

При преобразовании базы данных из Microsoft Access 2.0 или более ранней версии в Microsoft Access 2002 или более поздней версии необходимо изменить текст программы так, чтобы проверка для случая Null выполнялась отдельно.

Изменение формата даты

Всем хорошего дня!
У меня такая проблема:
Написал функцию расчёта срока изготовления изделия для этапов производства, в зависимости от общей даты Старта (А1) и Финиша (А2) Заказа, (К — коэффициент, зависящий от очерёдности этапа):

Изменение формата даты
Здравствуйте! Подскажите, пожалуйста, как изменить формат дат в Excell (например с 2017-10-25 на.

Преобразование формата даты
Есть следующая проблема: На листе Excel расположен элемент ComboBox, забирающий дату из таблицы.

Из одного формата даты в другую
Всем привет, подскажите как мне из даты формата 29.04.1999 преобразовать в дату 19990429 ?

Макрос для изменения формата даты
Уважаемые форумчане, может кто-то предложить макрос для перевода даты в формате 12/01/2016 в.

вот что-то по примеру мож подойдет

anton-sf, благодарю, стало лучше!
А как добавить проверку на наличие входных данных? (Даты А1 или А2 может не быть)

Rube, данный код всегда будет возвращать True, независимо от содержимого, так как выясняется тип переменной

Rikozenit, не знаю как правильно, объявленная но пустая переменная типа Date всегда содержит значение 0:00:00, так что сравнения типа IsNull, IsEmpty не помогут,
соответственно объявляю ещё одну переменную которой ничего не присваиваю и она выполняет роль пустой, вот с ней и сравниваю, в вашем случае сделаем доп. функцию

При этом, дальше в коде, ответ функции FSrok так же надо проверять на пустую дату

Добавлено через 27 минут

Функция сработает если хоть одна переменная не пустая

Если нужно что бы обе переменные не были пустыми то Or надо заменить на And

anton-sf, во-первых, спасибо огромное! Вторая функция казалось бы то, что нужно, но почему-то всё равно не хочет работать: если А1 или А2 пустые — выдаёт в поле таблицы #Ошибка. Как он проскакивает проверку — не понятно.

Функция сработает если хоть одна переменная не пустая

Если нужно что бы обе переменные не были пустыми то Or надо заменить на And

А что значит не работает ? Поясните задачу

Если вы ответ функции записываете в ячейку сразу — это вы зря, я же писал что нужно проверять ответ функции FSrok, то есть

unick12345, функция должна возвращать количество дней которые уйдут на производство

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Макрос для смены формата даты
Добрый день ! Как с помощью макроса поменять формат даты в столбце данных на dd/mm/yyyy для.

Изменение формата столбца
Всем добрый день! Столкнулся с такой проблемой.. Есть колонка куда вставляется дата строкой в.

Изменение формата столбца
Доброго времени суток! У меня такая проблема: Я перевожу из файла .txt вида, например, такого.

Изменение формата ячейки
Всем привет ))) 1. Как в Excel-e в ячейке с формулой, сделать некоторые числа подстрочными (числа.

Примеры использования функций VBA

Удаление ненужных символов

Зачастую строки в программе содержат ненужные символы пробелов в конце или в начале строки, которые необходимо удалить, т.к. посторонние начальные или конечные пробелы в строке могут вызвать «неполадки» в работе программы.

В VBA имеются три функции, предназначенные для удаления начальных и конечных пробелов из строки: LTrim, RTrim, Trim. Следует иметь ввиду, что эти функции на самом деле не изменяют исходную строку, а возвращают копию строки с удаленными лишними пробелами.

Определение длины строки

Длину строки, как правило, надо знать при форматировании сообщений для пользователя или при форматировании строковых данных, вводимых процедурой в рабочий лист Excel или документ Word. VBA для этих целей использует функцию Len. В приведенным ниже листинге между знаками круглых скобок и словом присутствует по два пробела.

Следует быть внимательными со строками фиксированной длины. Поскольку строка фиксированной длины имеет всегда одну и ту же длину, функция Len всегда возвращает объявленную длину строки, независимо от фактической длины строки. Например, если в строковой переменной фиксированной длины StrokeName, имеющей длину 15 символов, фактически находится слово «солнце», то функция Len(StrokeName) возвратит результат 15. Чтобы в таком случае узнать фактическую длину строки (в нашем случае — 6), необходимо использовать следующую комбинацию функций: Len(Trim(StrokeName)).

Сравнение и поиск строк

В VBA имеются две функции, помогающих сравнивать строки: StrComp, InStr.

Функция StrComp

StrComp (String1, String2 [, Compare])

String1, String2 — любые два строковых выражения, которые необходимо сравнивать.

Compare — необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):

  • vbBinaryCompare — бинарное сравнение двух строк;
  • vbTextCompare — текстовое сравнение двух строк;
  • vbDatabaseCompare — используется только в Microsoft Access.
Читать еще:  Vba excel len

При выполнении StrComp возвращается одно из следующих значений:

  • -1, если String1 меньше String2;
  • 0, если String1 и String2 равны;
  • 1, если String1 больше String2.

В вышеприведенном листинге в текстовом режиме сравниваются две строки: «Строка по умолчанию» и » Строка по умолчанию». Результат сравнения = 1, т.е. «Строка по умолчанию» больше, чем » Строка по умолчанию».

Поэкспериментируйте с разнообразными строками для лучшего понимания работы функции StrComp.

Функция InStr

Функция InStr дает возможность определить, содержит ли одна строка другую строку.

StrComp ([Start, ] String1, String2 [, Compare])

String1, String2 — любые допустимые строковые выражения. Функция проверяет содержится ли String1 в String2.

Compare — необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):

  • vbBinaryCompare — бинарное сравнение двух строк;
  • vbTextCompare — текстовое сравнение двух строк;
  • vbDatabaseCompare — используется только в Microsoft Access.

Start — необязательный аргумент, является численным выражением и указывает положение символа в String1, с которого должна начинаться проверка.

InStr возвращает число, обозначающее положение символа в String1, где было обнаружено String2. Если InStr не находит String2 в String1, то возвращается 0. Если String1 (или String2) имеет значение Null, то функция также возвращает Null.

Разбиение строки

Иногда возникает необходимость разбиения строки на составляющие части. В VBA эту задачу решают три функции: Left, Right, Mid.

Функция Left

Left (String, Length)

String — любое допустимое строковое выражение.

Length — любое численное значение.

Функция возвращает копию String, начиная с первого символа и включая количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String.

Функция Right

Right (String, Length)

String — любое допустимое строковое выражение.

Length — любое численное значение.

Функция возвращает копию String, начиная с последнего символа и включая справа налево количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String. Функция Right всегда копирует символы от конца строки к ее началу.

Функция Mid

Mid (String, Start, [, Length])

String — любое допустимое строковое выражение.

Length, Start — любые численные значения.

Функция Mid возвращает копию String, начиная с положения символа в String, задаваемого с помощью аргумента Start . Необязательный аргумент Length определяет количество копируемых в Mid символов из String. Если Start содержит большее число, чем фактическая длина String, то возвращается пустая строка.

Символы, которые нельзя ввести с клавиатуры

Зачастую случается, что надо ввести какой-либо символ, для которого отсутствует клавиша на клавиатуре (например, символ копирайта). Другая ситуация — когда надо в строку включить служебный символ VBA (самый распространенный случай — включение двойных кавычек).

Чтобы включить в строку символы, которые невозможно ввести с клавиатуры, или которые имеют особое значение для VBA, используется функция Chr.

Charcode — любое численное выражение, являющееся допустимым кодом для набора символов, используемого компьютером. Должен быть целым числом от 0 до 255.

Функция Chr принимает код отдельного символа в качестве аргумента и возвращает строку, содержащую соответствующий этому коду символ. Данная функция использована в вышеприведенных листингах для перевода строки при выводе сообщения на экран Chr (13).

Поскольку символы, используемые для начала новой строки, являются очень важными при форматировании сообщений и других строковых данных, которыми манипулируют VBA-процедуры, имеется несколько предопределенных констант для этих символов, чтобы не было необходимости использовать функцию Chr:

  • vbCr — символ возврата каретки. Эквивалент Chr(13)
  • vbLf — символ смещения на одну строку. Эквивалент Chr(10)
  • vbCrLf — символ возврата каретки+смещения на одну строку. Эквивалент Chr(13)+ Chr(10)
  • vbTab — символ табуляции. Эквивалент Chr(9)

Для просмотра списка код-символ надо открыть справочную систему VBA и по запросу «character sets» будет представлена соответствующая таблица.


Форматирование значений данных

Очень часто формат данных на выходе программы по тем или иным причинам нас не совсем устраивает. Эту задачу решает функция Format.

VBA-функция Format идентична функции Format в Excel и использует те же символы-заполнители форматирования данных.

Format (Expression [, Format[, Firstdayofweek [, Firstweekofyear]]])

Expression — любое допустимое выражение (обязательный аргумент).

Format — допустимое выражение именованного или определенного пользователем формата.

Firstdayofweek — константа, которая определяет первый день недели.

Firstweekofyear — константа, которая определяет первую неделю года.

Чтобы использовать функцию Format, надо либо задать предопределенный формат, либо создать образ определенного формата, используя символы-заполнители.

Excel VBA

Excel VBA Dates & Time, Format Function, User Defined Date, Number & String Formats

User Rating: 4 / 5

Excel VBA Dates & Time, Format Function, User Defined Date, Number & String Formats

Contents:

Excel VBA Dates & Time

Excel Dates Equate to Serial Numbers — Excel stores all dates as integers and all times as decimal fractions. Your System’s Locale settings determines display format for Numbers, Currency, Date & Time. With the VBA Format function you can create User-Defined Date & Time Formats, Number Formats & String Formats, besides using predefined Named Date/Time & Numeric Formats. The Format function formats and returns an expression (String value) as per the specified format. Your system-defined formats include the Short Date Format, Long Date Format, Short Time Format, Long Time Format, and the Number & Currency Formats, which are specified in your computer’s regional settings, which determine your default display formats.

Date Data Type in VBA: Date equates to a numeric value which is the count of number of days elapsed from a certain referenced date. Dates are stored as 64-bit (8-byte) Double Precision floating-point numbers.

Enclosing a date within number signs (#) ensures that the date literal will actually remain the date value which you actually mean to refer or use in your code. Generally the locale in which your application might be running (ie. Code Locale), determines the actual meaning of date value you enter, for ex. if you mean July 02, 2010 in a locale using mm/dd/yyyy, entering 07/02/2010 will compile your code correctly but entering 07/02/2010 in a locale using dd/mm/yyyy format will erroneously interpret as February 07, 2010 in your code. Using number signs ( # ) ensures that the date literal remains independent of your computer’s date and time format settings. Date literal is the date format specified by the locale settings for your code (ie. Code Locale). # 7/2/2010 # is the date literal that represents July 02, 2010, where English-U.S. is the locale setting for your application.

System’s Locale settings vs. Code Locale: The System’s Locale settings is the locale of the user who runs your program — the User Locale determines which default settings a user wants for formatting Numbers, Currency, Time & Date (used as a reference for user output) and uses Control Panel settings provided by the operating system. System-defined Format is dependent on your System’s Locale settings. The code locale is always English/U.S. in Visual Basic, irrespective of the international version being used. Short Time format and Short Date format of the Code Locale are used to Display Date and Time in the development environment ie. VBE in Excel.

Читать еще:  Vba excel функции даты и времени

To ensure that the date is correctly interpreted in any System Locale, enter dates within number signs ( # ), in code, in the format #month/day/year#. Because only English/U.S. is allowed in Visual Basic as a programming locale, the date will be the same to a user wherever your application is run. See below example.

Example: System-defined format (format specified in your computer’s regional settings) — Short Date Format is » dd-mm-yy » (English/U.K.) — refer Image 1a

Sub DateLiteral_1()

‘system-defined format (format specified in your computer’s regional settings) — Short Date Format is » dd-mm-yy » (English/U.K.) — refer Image 1a

Dim MyDate As Variant, MyDate1 As Variant

‘short date format of your Code Locale is always English/U.S. in Visual Basic, which determines display of Date in VBE

‘below format will assume your system-defined format:

‘returns » Saturday, July 5, 2014 «

ActiveCell.Offset(1, 0) = Format(MyDate, » dddd, mmmm d, yyyy «)

ActiveCell.Offset(1, 1) = » date within number signs ( # # ) «

‘returns » Wednesday, May 7, 2014 «

ActiveCell.Offset(2, 0) = Format(MyDate1, » dddd, mmmm d, yyyy «)

ActiveCell.Offset(2, 1) = » date within double quotes «

End Sub

Example: System-defined format (format specified in your computer’s regional settings) — Short Date Format is » m/d/yyyy » (English/U.S.) — refer Image 1b

Sub DateLiteral_2()

‘system-defined format (format specified in your computer’s regional settings) — Short Date Format is » m/d/yyyy » (English/U.S.) — refer Image 1b

Dim MyDate As Variant, MyDate1 As Variant

‘short date format of your Code Locale is always English/U.S. in Visual Basic, which determines display of Date in VBE

‘below format will assume your system-defined format:

‘returns » Saturday, July 5, 2014 «

ActiveCell.Offset(1, 0) = Format(MyDate, » dddd, mmmm d, yyyy «)

ActiveCell.Offset(1, 1) = » date within number signs ( # # ) «

‘returns » Saturday, July 5, 2014 «

ActiveCell.Offset(2, 0) = Format(MyDate1, » dddd, mmmm d, yyyy «)

ActiveCell.Offset(2, 1) = » date within double quotes «

End Sub

Format specified in your computer’s regional settings — Short Date / Long Date Format can be set or changed by the individual user manually from the Formats tab of the Region item in Control Panel in Windows 8. Refer Image 2.

Excel Dates Equate to Serial Numbers:

Excel stores all dates as integers and all times as decimal fractions. With this system, Excel can add, subtract, or compare dates and times just like any other numbers, and all dates are manipulated by using this system. In this system, the serial number 1 represents 1/1/1900 12:00:00 AM, the first supported day from when the Excel calendar starts. Bug in Excel: Excel erroneously treats 1900 as a leap year, which has presumably been done knowingly by Microsoft to provide compatibility with Lotus 1-2-3, and so actually the bug would have been in Lotus 123 (Excel’s predecessor).

In Excel, Dates equate to a » serial number » (which is a numeric value) that is the count of number of days elapsed from a certain referenced date. Dates are stored as 64-bit (8-byte) Double Precision floating-point numbers. The integer part (values to the left of decimal) is the number of days elapsed since January 1, 1900. For example, January 1, 1900 is stored as 1; January 2, 1900 is stored as 2; March 15, 2001 is stored as 36,965. The fractional part (values to the right of decimal) holds time information, and represents the time as a fraction of a whole day. For example, 12.00AM (midnight) is stored as 0; 6:00AM is stored as 0.25; 12.00PM (noon) is stored as 0.5; 6:00PM is stored as 0.75; 6:00:30PM is stored as 0.750347222. To check the » serial number » of a date and time simply format the cell as «General» or format to number — conversely type a number in Excel and formatting the cell to date format will display the equivalent date. The Date and Time of » 10/3/1954 6:00:00 AM » has a serial number of 20000.25.

Note that where the 1900 date system is used by Excel for Windows, but Excel for Mac uses the 1904 date system so that typing the number 1 in Excel and formatting it in date format will display 1/2/1904 12:00:00 AM in Excel for Mac while Excel for Windows displays it as 1/1/1900 12:00:00 AM. In Mac, you can change to the 1900 date system by clearing the 1904 date system in the Calculation tab (in Preferences) whereas in Excel for Windows you can change to the 1904 date system — in Excel 2007 click the Microsoft Office Button image, click Excel Options, and then click the Advanced category and in the ‘When calculating this workbook’ options select the ‘ Use 1904 date system ‘.

Format Function in VBA

The vba Format function formats and returns an expression (String value) as per the specified format. Syntax: Format(expression, format, firstdayofweek, firstweekofyear). It is necessary to specify the expression argument, which is any expression you wish to format. The other 3 arguments are optional to specify. The format argument specifies a named or user-defined format expression — (i) to format numbers (or dates/times), you will use predefined named numeric (or date/time) formats or create user-defined numeric (or date/time) formats; (ii) to format date and time serial numbers, you will use date/time formats or numeric formats; (iii) to format strings you will create user-defined string formats. You can also use constants to specify the first day of the week or the first week of the year in the arguments of firstdayofweek and firstweekofyear respectively.

Formatting a number by omitting the format argument will return a String representation of the number, similar to using the Str vba function, but a positive number thus formatted will not include a leading space for the sign of number in the returned string like when using the Str function.

While using the Format Function for Date formatting, you must specify the expression argument appropriately in Gregorian or Hijri depending if your Calendar property setting is Gregorian or Hijri.

Constants to be used for the argument firstdayofweek: vbUseSystem (value 0) — use NLS API setting; vbSunday (this is the default) (value 1) — Sunday; vbMonday (value 2) — Monday; vbTuesday (value 3) — Tuesday; vbWednesday (value 4) — Wednesday; vbThursday (value 5) — Thursday; vbFriday (value 6) — Friday; vbSaturday ( value 7) — Saturday.

Constants to be used for the argument firstweekofyear: vbUseSystem (value 0) — use NLS API setting; vbFirstJan1 (this is the default) (value 1) — start with week in which January 1 occurs; vbFirstFourDays (value 2) — start with the first week which has at least four days in the year; vbFirstFullWeek (value 3) — start with the first full week of the year which has all 7 days.

Named Date/Time Formats

Listed below are predefined named Date and Time formats. Your system setting determines the Date display.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×