Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
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.

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

Функции дата и время Excel

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

Функция ВРЕМЯ

Возвращает значение времени, составленное из отдельных частей, заданных числами.
Синтаксис: =ВРЕМЯ(часы; минуты; секунды), где

  • Часы – обязательный аргумент. Число либо ссылка на ячейку, содержащую числовое значение от 1 до 24.
  • Минуты – обязательный аргумент. Число либо ссылка на ячейку, содержащую числовое значение от 1 до 60.
  • Секунды – аналогично минутам.

Функция ВРЕМЯ не может возвращать значение от 24 и выше, т.е. если для аргумента «Часы» задать число 25, то результатом будет 1 час.

Пример использования:
На изображении приведены несколько вариантов использования данной функции. Видно, если показатель секунд превышает значение 60, то его часть перекидывается на минуты. То же самое произойдет, если будет превышен показатель для минут. Если превышен показатель для аргумента, принимающего часы, то он просто будет отображать время на 24 часа меньше заданного.

Функция ДАТА

Возвращает значение даты, составленное из отдельных частей, заданных числами.
Синтаксис: =ДАТА(год; месяц; день), где

  • Год – обязательный аргумент. Число либо ссылка на ячейку, содержащую числовое значение от 1900 до 9999.
  • Месяц – обязательный аргумент. Число либо ссылка на ячейку, содержащую числовое значение от 1 до 12.
  • День – обязательный аргумент. Число либо ссылка на ячейку, содержащую числовое значение от 1 до 31.

Если для аргумента «День» задать число, превышающее количество дней в указанном месяце, то лишние дни будут переданы на следующие месяцы, т.е. если для января указать 32 дня, то функция вернет 1 февраля.

Пример использования:
Обратите внимание на пример таблицы. Последние 2 строки возвращают одинаковый результат. Т.к. минимальная дата, которая может быть представлена в Excel, имеет 1900 год, то ко всем числам, которые переданы аргументу «Год» и меньше минимального года, то к ним автоматически прибавляется 1900.

Функция ГОД

Возвращает число, представляющее год указанной даты.
Синтаксис: =ГОД(дата), где «дата» является обязательным аргументом и принимает числовое значение даты либо ссылку на такое значение.
Пример использования:
=ГОД(«08.10.2013») – возвращаемый результат 2013.
=ГОД(41555) – так же возвращаемый результат 2013, т.к. 41555 является числовым представление даты 08 октября 2013.

Функция МЕСЯЦ

Возвращает число, представляющее месяц указанной даты.
Синтаксис: =МЕСЯЦ(дата), где «дата» является обязательным аргументом и принимает числовое значение даты либо ссылку на такое значение.

Читать еще:  Коды ошибок vba excel

Пример использования:
=МЕСЯЦ(«01.01.2001») – возвращаемый результат 1.
=МЕСЯЦ(36892) – так же возвращаемый результат 1, т.к. 36892 является числовым представление даты 01.01.2001.

Функция ДЕНЬ

Возвращает число, представляющее день указанной даты.
Синтаксис: =ДЕНЬ(дата), где «дата» является обязательным аргументом и принимает числовое значение даты либо ссылку на такое значение.

Пример использования:
=ДЕНЬ(«09.05.1945») – возвращаемый результат 9.
=ДЕНЬ(16566) – так же возвращаемый результат 9, т.к. 16566 является числовым представление даты 09.05.1945.

Функция ЧАС

Возвращает число от 0 до 23, представляющее час указанного времени или даты.
Синтаксис: =ЧАС(время), где «время» является обязательным аргументом и принимает числовое значение времени, даты либо ссылку на такое значение.

Пример использования:
=ЧАС(«14:34:50») – функция вернет значение 14.
=ЧАС(0,0241898148) – так же возвращает значение 14, так как 0,0241898148 является числовым представлением времени 14 часов 34 минуты 50 секунд.

Функция МИНУТЫ

Возвращает число от 0 до 59, представляющее минуты указанного времени или даты.
Синтаксис: =МИНУТЫ(время), где «время» является обязательным аргументом и принимает числовое значение времени, даты либо ссылку на такое значение.

Пример использования:
=МИНУТЫ(«22:45:00 «) – функция вернет значение 45.
=МИНУТЫ(0,428472222222222) – возвращает значение 17, так как 0,428472222222222 является числовым представлением времени 10:17:00.

Функция СЕКУНДЫ

Возвращает число от 0 до 59, представляющее секунды указанного времени или даты.
Синтаксис: =СЕКУНДЫ(время), где «время» является обязательным аргументом и принимает числовое значение времени, даты либо ссылку на такое значение.

Пример использования:
=СЕКУНДЫ(«07:23:32») – функция вернет значение 32.
=СЕКУНДЫ(0,999988425925926) – возвращает значение 59, так как 0,999988425925926 является числовым представлением времени 23:59:59.

Функция ВРЕМЗНАЧ

Преобразует время, заданное текстовой строкой, в его числовое значение. Распознаются только те форматы записи времени, которое доступны в меню формата ячеек.
Синтаксис: =ВРЕМЗНАЧ(текст), где «текст» — обязательный аргумент, принимающий строку времени либо ссылку на такую строку.

Пример использования:
На изображении приведены несколько вариантов использования функции ВРЕМЗНАЧ. Обратите внимание на первый столбец, в нем указываются все строки, которые были заданы для аргумента рассматриваемой функции. Все значения явно указаны строкой, кроме последней, поэтому функция ее не преобразует и возвращается ошибку. В четвертой строке указана дата и время, но функцией воспринимается только временное значение. Остальная часть игнорируется.

Функция ДАТАЗНАЧ

Преобразует дату, заданную текстовой строкой, в ее числовое значение. Распознаются только те форматы записи даты, которое доступны в меню формата ячеек.
Синтаксис: =ДАТАЗНАЧ(текст), где «текст» — обязательный аргумент, принимающий строку даты либо ссылку на такую строку.

Пример использования:
На изображении приведены различные варианты использования функции ДАТАЗНАЧ. В первом столбце указываются строки, которые были заданы для аргумента рассматриваемой функции. Все значения явно указаны строкой, но последняя задана обычным значением, поэтому функция ее игнорирует и возвращается ошибку. В четвертой строке указана дата и время, но функцией обрабатывается только значение для даты.

Функция ДАТАМЕС

Возвращает дату, которая наступит либо наступила через указанное количество месяцев. Удобство использование функции заключается в том, что нет необходимости помнить о количестве дней в том или ином месяце.

Синтаксис: =ДАТАМЕС(начальная_дата; число_месяцев), где

  • начальная_дата – обязательный аргумент. Значение даты либо ссылка на ячейку, содержащую такое значение.
  • число_месяцев – обязательный аргумент. Целое число либо ссылка на такое число, указывающее, какое количество месяцев необходимо прибавить к начальной дате.

Имеете в виду, что если первый аргумент содержит время, то функция его усечет.

Пример использования:
=ДАТАМЕС(«01.01.2001»; 2) – функция возвращает результат 01.03.2001.
=ДАТАМЕС(«01.01.2001»; -2) – результат 01.11.2000.
=ДАТАМЕС(«01.01.2001 10:00:00»; 2) – функцией урезается время и возвращается результат 01.03.2001.

Функция КОНМЕСЯЦА

Возвращает последнюю дату месяца, который наступит либо наступил через указанное количество месяцев. Функция похожа на ДАТАМЕС, но возвращает не указанный день, а последний день высчитанного месяца.
Синтаксис: =КОНМЕСЯЦА(начальная_дата; число_месяцев), где

  • начальная_дата – обязательный аргумент. Значение даты либо ссылка на ячейку, содержащую такое значение.
  • число_месяцев – обязательный аргумент. Целое число либо ссылка на такое число, указывающее, какое количество месяцев необходимо прибавить к месяцу начальной даты.

Если начальная дата указана вместе со временем, то оно усекается.

Пример использования:
=КОНМЕСЯЦА(«01.01.2001»; 0) – функция возвращает результат 31.01.2001.
=КОНМЕСЯЦА(«01.01.2001»; -2) – результат 30.11.2000.
=КОНМЕСЯЦА(«01.01.2001 10:00:00»; 2)– функцией урезается время и возвращается результат 31.03.2001.

Функция РАБДЕНЬ

Высчитывает и возвращает дату, которая наступит или наступила через указанное количество рабочих дней. Нерабочими днями считается суббота, воскресенье и праздничные дни.
Синтаксис: =РАБДЕНЬ(начальная_дата; число_дней; [праздники]), где

  • начальная_дата – обязательный аргумент. Значение даты либо ссылка на ячейку, содержащую такое значение.
  • число_дней – обязательный аргумент. Число либо ссылка на такое число, указывающее количество рабочих дней, которое должно пройти, чтобы получить высчитываемую дату.
  • Праздники – необязательный аргумент. Дата, диапазон ячеек с датами либо массив дат, которые необходимо исключить из рабочих дней.

Пример использования:
=РАБДЕНЬ(«11.06.2013»;1) – возвращает результат 12.06.2013.
=РАБДЕНЬ(«11.06.2013»;4) – результат 17.06.2013.
=РАБДЕНЬ(«11.06.2013»;1; «12.06.2013») – функция вернет результат 13.06.2013.
=РАБДЕНЬ(«11.06.2013»;1; <"12.06.2013";"13.06.2013">) – результатом будет 14.06.2013.

Функция ЧИСТРАБДНИ

Возвращает количество рабочих дней между указанными датами (включительно). Нерабочими днями считается суббота, воскресенье и праздничные дни.
Синтаксис: =ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники]), где

  • начальная_дата и конечная_дата – обязательные аргументы. Значение даты либо ссылка на ячейку, содержащую такое значение.
  • праздники – необязательный аргумент. Дата, диапазон ячеек с датами либо массив дат, которые необходимо исключить из рабочих дней.

Пример использования:
=ЧИСТРАБДНИ(«11.06.2013″;»16.06.2013») – результат функции 4.
=ЧИСТРАБДНИ(«11.06.2013″;»16.06.2013″;»14.06.2013») – возвращаемый результат 3.

Функция ДЕНЬНЕД

Возвращает порядковый номер дня недели для указанной даты. Также можно указать тип нумерации дней недели.

Синтаксис: =ДЕНЬНЕД(дата; [тип]), где

  • дата – обязательный аргумент, принимающий дату либо ссылку на дату для которой необходимо определить день недели.
  • тип – необязательный аргумент. Целое число от 1 до 3, которое указывает формат подсчета:
    • 1 – неделя начинается с воскресенья. Является значением по умолчанию;
    • 2 – неделя начинается с понедельника;
    • 3 – неделя начинается с понедельника, а отсчет начинается с нуля.

Пример использования:
=ДЕНЬНЕД(«07.10.2013») – результат функции 2, т.к. аргумент тип не указан, а дата является понедельником.
=ДЕНЬНЕД(«07.10.2013», 2) – результат выполнения функции 1.
=ДЕНЬНЕД(«07.10.2013», 3) – результат 0.

Функция НОМНЕДЕЛИ

Возвращает порядковый номер недели в году.

Синтаксис: =НОМНЕДЕЛИ(дата; [тип]) , где

  • дата – обязательный аргумент, принимающий дату либо ссылку на дату для которой необходимо определить день недели.
  • тип – необязательный аргумент. Целое число от 1 до 2, которое указывает формат недели:
    • 1 – неделя начинается с воскресенья. Является значением по умолчанию;
    • 2 – неделя начинается с понедельника;

Пример использования:
=НОМНЕДЕЛИ(«07.10.2013», 1) – возвращает результат 41.
=НОМНЕДЕЛИ(«07.10.2013», 2) – возвращает 40.

Функция ТДАТА

Возвращает текущее (системное) дату и время.

Синтаксис: =ТДАТА(). Функция не имеет аргументов.

Функция СЕГОДНЯ

Возвращает текущую дату без времени.

Синтаксис: =СЕГОДНЯ(). Функция не имеет аргументов.

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы я мог развивать его дальше.

Комментарии

Владимир, добрый день!

Если я правильно понял, то Вы хотите записывать время последнего изменения ячейки в строке.
Это реализуется с помощью макросов (событие изменения ячейки с проверкой измененного диапазона).
Читайте про событийные процедуры VBA.

Чтобы просто отключить автоматический пересчет нужно на вкладке ФОРМУЛЫ ленты Excel в параметрах вычислений (иконка в виде калькулятора) выбрать пункт ВРУЧНУЮ. Но это не решит проблему фиксации времени изменения ячейки, т.к. при пересчете отобразится текущее время.

Читать еще:  Vba excel array синтаксис

Функции для работы с датой и временем

Функции для работы с числовыми значениями

Функций для работы с числовыми значениями в VBA очень много. Используются они реже, чем строковые функции, но во многих ситуациях без них не обойтись. Еще один момент: если вы программируете на языке VBA, то, скорее всего, на вашем компьютере установлен Microsoft Office с Excel. В Excel есть свой собственный мощный набор встроенных функций для работы с числовыми значениями, которые вполне доступны из VBA. Если вы в моем списке не найдете ничего подходящего для вашей ситуации, возможно имеет смысл воспользоваться функциями Excel.

Кроме того, если в окне Надстройки(меню Сервис | Надстройки) установить флажок напротив строки Пакет анализа, в Excel будет добавлен дополнительный набор аналитических научных и финансовых функций, а если в том же окне установить флажок напротив Analysis ToolPak — VBA, то эти функции станут доступны из VBA (только внутри Excel, в котором установлена эта надстройка).

Далее приведены только универсальные функции VBA для работы с числовыми значениями. Эти функции доступны из любых приложений VBA.

— Abs() — эта функция возвращает абсолютное значение переданного ей числа (то же число, но без знака). Например, Abs(3) и Abs(−3) вернут одно и то же значение 3. Обычно используется тогда, когда нам нужно определить разницу между двумя числами, но при этом мы не знаем, какое число — первое или второе — больше. Результат вычитания может быть и положительным и отрицательным. Чтобы он был только положительным, используется эта функция.

— Int(), Fix() и Round() — позволяют по-разному округлять числа. Int() возвращает ближайшее меньшее целое, Fix() отбрасывает дробную часть, Round() округляет до указанного количества знаков после запятой. При этом Round() работает не совсем правильно, в чем легко убедиться:

MsgBox Round(2.505, 2)

Поэтому на практике для округления лучше использовать Format():

MsgBox Format(2.505, «#,##0.00»)

— Rnd() и команда Randomize — используются для получения случайных значений (очень удобно, например, при генерации имен файлов). Обычный синтаксис при применении Rnd() выглядит так:

случайное_число = Int(минимум + (Rnd() * максимум))

MsgBox (Int(1 + (Rnd() * 100)))

Однако перед вызовом функции Rnd() необходимо выполнить команду Randomize для инициализации генератора случайных чисел.

— Sgn() — позволяет вернуть информацию о знаке числа. Возвращает 1, если число положительное, −1, если отрицательное, и 0, если проверяемое число равно 0.

Без функций даты и времени обычно обойтись очень сложно. Самые важные функции VBA для работы с датой/временем приведены далее.

— Date(), Time(), Now() — возвращают соответственно текущую системную дату, текущее системное время и дату и время одновременно. Установить их можно при помощи одноименного соответствующего оператора, например, так:

— DateAdd() — добавляет к дате указанное количество лет, кварталов, месяцев и так далее до секунд.

— DateDiff() — возвращает разницу между датами (в единицах от лет до секунд).

-DatePart() — очень важная функция, которая возвращает указанную вами часть даты (например, только год, только месяц или только день недели).

— DateSerial() — создает значение даты на основе передаваемых символьных значений. То же самое делает функция DateValue(), но при другом формате принимаемых значений. Аналогичным образом (для времени) работают TimeSerial() и TimeValue().

— Day() (а также Year(), Month(), Weekday(), Hour(), Minute(), Second()) — специализированные заменители функции DatePart(), которые возвращают нужную вам часть даты.

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

— Timer() — возвращает количество секунд, прошедших с полуночи.

Если нужно получить дополнительные возможности работы с датой/временем, то в вашем распоряжении объектная модель Outlook. Например, при помощи ее можно получить информацию о праздниках и рабочих/нерабочих днях большинства стран мира.

Excel vba работа с датами

Работа с датой

​Смотрите также​​ «01 Янв 2007″​PureBasic if mS​ смотрится​: Private Sub CommandButton1_Click()​Оксана33​
​ указанной ячейке введён​ A1=»21.01.2012″, как прибавить​ флаг типа Boolean,​Функция​
​1​
​ExpressionОбязательный аргумент -​ системную дату. Формат​ Dim date1 As​ не получится ввести​больше похоже на​ не стандартна. Вдруг​cooler_92​ это совсем другое​ = «Jan» then​кстати можно еще​ Dim x As​: я не пойму. ​ не прошлый день,​ к нему календарный​ указывающий на вид​Now​Воскресенье (по умолчанию)​ выражение типа Variant,​ даты, возвращаемый функцией,​ Date Dim date2​ дату в неправильном​ правду.. только я​ это пользователь забыл​: Привет Эт снова​ дело.​ mI=1 if mS​ так​ String x =​ cdbl для того,​ то ввести формулу,​ месяц(2,3,4,5. ) по средствам​ возвращаемого дня недели.​позволяет быстро узнать​vbMonday​ содержащее выражение даты​ определяется национальными системными​ As String Dim​ формате.​ что то не​ точку поставить, а​ я.. по сути​MsgBox CDate(«01 Jan​ = «Feb» then​Dim x As​ MonthName(Month(Date), False) If​ чтобы преобразовать в​ возвращающую их разницу,​ VBA и сравнить​ По умолчанию установлен​ текущую дату и​2​ или строковое выражение,​ установками​ date3 As String​analyst​ сообразил, где какое​ программа такая плохая​ программа написанна, но​ 2007″) MsgBox CDate(«01​ mI=2. ​ String x=Choose(Month(Date),»Января»,»Февраля»,»Марта». «Декабря») msgbox​ (Right(x, 1) =​ число? я думала,​ можно, например, так​ с сегодняшним числом?​ в False, что​ время по системному​Понедельник​

​ распознаваемое как значение​​Параметры​ Dim date4 As​
​: Эта запись вообще​ сообщение должно вываливаться..​ посчитала ему, и​ в ней один​ Янв 2007″)Кроме того,​pashulka​ x​ «ь») Or (Right(x,​ что он для​ :​Формулами это сделать​

​ означает вывод полного​​ календарю и часам​vbTuesday​ даты или времени​
​Функция не имеет аргументов​ Date date3 =​ касалась кода, который​ напиши плз​ вывела результат почти​ косяк.​ если внимательно прочитать​:​MU-GK​ 1) = «й»)​ другого служит​ActiveCell = «=TODAY()-«​ вообще не проблема,​ дня недели FirstDayOfWeekНеобязательный​ компьютера. Чтобы получить​3​Пример​Пример​ InputBox(«Введите дату рождения:»)​ написан до неё.​analyst​ 700000 тысяч дней..​Надо написать программу,​ моё сообщение, то​MU-GK​: Смотрится. Mid в​ Then Mid(x, Len(x))​тогда почему не​

​ & CDbl(Cells(2, 1))или​​ но по ячейкам​ аргумент — числовая​ только системную дату​Вторник​
​’ Используем функцию IsDate​’ Выводим текущую системную​ If date3 =​ Читайте внимательнее!​: Да согласен. Я​ Ну эт размышления​

​ определяющую сколько дней​​ там говорится, что​, Все три вышеперечисленные​ данном случае не​ = «я» Else​ CLng или CSng,​ActiveCell = «=TODAY()-«​ бить лишнюю инфу​ константа, указывающая, какой​ без времени, используйте​vbWednesday​ ‘ для проверки,​ дату в заголовке​ Format(date3, «dd.mm.yyyy») Then​А на счёт​ так подумал и​ моего препода. Короч,​ прошло со дня​ англ.месяц можно заменить​
​ функции, локально-зависимые. поэтому​ функция, а оператор.​
​ Mid(x, Len(x)+1) =​ что для меня​ & Cells(2, 1).Value2​ не хочется вообще.​ день недели считать​ функцию Date​4​ является ли год​

​ формы Dim Today​​ ‘Стандартная ф-я, которая​ календаря согласен.​ решил, что нафига​ помогите с этим​ вашего рождения.​ на русск.аналог​ у нас, названия​

​pashulka​​ «а» End If​
​ более логично бы​Оксана33​
​Спасибо.​ первым: vbUseSystem=0Используется системная​Примечание: Не забывайте,​
​Среда​ высокосным ‘ Для​ Today=​ выводит диалоговое окно​cooler_92​ делать так, если​ разобраться.. Знаю, что​Вот текст программы​или его номер​ месяцев должны указываться​
​: о как​ ActiveCell = x​ звучало или даже​:​Юрий М​ информация vbFirstJan1=1Неделя, содержащая​ что пользователь может​vbThursday​

​ этого проверяем, существует​​Date​ с сообщением и​: Про форму я​ можно создать форму,​
​ нужно ф-ей Format​Option Explicit Sub​

​Да это понятно, что​​ как Январь/Января или​ни разу не​ End Sub​ CInt, но только​pashulka​

Читать еще:  Excel application quit

​: Sub PlusOneMonth()​​ 1 января vbFirstFourDays=2Первая​ самостоятельно устанавливать системное​

​5​​ ли 29 февраля​’ узнаем текущую​
​ полем ввода If​ в курсе, но​ а в ней​ пользоваться, но не​ date_rozhd() ‘Программа, считающая​

​ на территории РФ​​ Янв/Янва и т.п.​ встречал​snipe​ с ним какая​, объясни пожалуйста почему​Dim x​ неделя, содержащая как​

​ время и дату​​Четверг​
​ Dim MyYear is​ системную дату ‘​ date3 = «»​ работать можно только​ три комбобокса, в​
​ знаю как..​ кол-во дней, прошедших​ действительны только Январь/Февраль,​​По поводу утилиты​​пойду ликбезом заниматься​: Благодарю, вы мне​ то засада -​ CDbl — он​x = «21.01.2012»​ минимум 4 дня​ на своем компьютере,​
​vbFriday​ String If​ Преобразуем в строку​ Then MsgBox «Дата​

​ в модуле, без​​ которых можно загрузить​analyst​
​ со дня рождения,​ а не Jan/Feb.​ — в Вашем​спасибо за наводку​ очень помогли!​ в экселе преобразовует,​ конвертирует его в​MsgBox DateSerial(Year(x), Month(x)​ нового года vbFirstFullWeek=3Первая​ поэтому эти значения​6​IsDate​ и выводим в​ рождения не введена!»​ использования визуальных компонентов.​ только то что​: Как на счёт​ до сегодняшней даты​Именно это я​ посте нет информации,​MU-GK​snipe​ а вот в​ число, которое Эксель​ + 1, Day(x))​ полная неделя года​ могут не иметь​Пятница​(«02/29/» & myYear) Then​ заголовке формы Form1.Caption​ Else date1 =​analyst​ нужно и не​ такого варианта?​ Dim date1 As​ и имел в​ куда выдаётся такая​: Индуцировано:​: Dim x As​ vba — нет​ интерпретирует как дату?​End Sub​Пример​ ничего общего с​vbSaturday​ MsgBox myYear &​ = CStr(Today)​ Date ‘ф-я определения​: Я же написал​ надо будет заморачиваться​Option Explicit Sub​

​ Date Dim date2​​ виду, что невозможно​ информация. если это​Есть функция​ String x =​

Функция Date

​Казанский​​’ Выводим сокращенное название​​ реальной датой и​7​ «- высокосный год»​

​ сегодняшней даты If​​ вариант без формы.​ на счёт всяких​​ date_rozhd() Dim a​​ As String Dim​ напрямую прочитать «01​ ячейки рабочего листа​Monthname​ MonthName(Month(Date), False) if​: В Excel нет​

​ седьмого месяца Form1.Caption​ ​ временем!​Суббота​ Else MsgBox myYear​Now​​ IsDate(date3) = False​​cooler_92​ там условий по​ As String Dim​ date3 As String​ Jan 2012″.​ (Excel), то можно​ ​, возвращающая имя месяца​
​ Month(Date)=3 or Month(Date)=8​
​ стандартной функции рабочего​
​ это всего лишь​Второй аргумент -​

Функция IsDate

​Возвращаемое значение​​Возвращаемые значения​​ & «- невысокосный​Категория​ Then ‘ф-я проверки​: не вариант..))) не​ поводу ввода некоректных​ date1 As Date​ Dim date4 As​Поскольку прочитать надо,​ просто заменить англ.​ по номеру, а​ Then x=x &​ листа CInt, а​ количество(читайте число) дней,​ число м-цев.​

​Возвращает значение типа Variant(Date),​Ниже перечислены значения, возвращаемые​ год» End If​Функции дат и​ корректности ввода двты​​ работает. ​​ данных. Пользователь сможет​​ Dim date2 As​​ Date date3 =​ то здесь два​ месяц на наш​ вот функции, возвращающей​ «а» Else Left(x,​ есть Int(Целое)​​ прошедших с 1​​ivan-msk77​(7, True)​ содержащее текущую дату​ функцией​Категория​ времени​ MsgBox «Дата введена​Пользователю конечно можно​

​ выбрать только то,​​ String Dim date3​ InputBox(«Введите дату рождения:»)​ выхода:​ отечественный или его​ ноимер месяца по​ len(x)-1) & «я»​​А что касается​

​ января 1900 года​: пошел пробовать, благодарю​Смотри также​ и время​Weekday​Функции дат и​IsDate(Expression)​ некорректно.» & Chr(13)​​ написать, но кто​​ что есть на​ As String Dim​ ‘Стандартная ф-я, которая​1. Менять сразу​ номер. а для​ имени кажется нет.​

​ msgbox x​
​ VB(A), то функция​ (или 2 января​

Функция Weekday

​ & «Формат даты​ сказал, что он​ самом деле!​ date4 As Date​

​ выводит диалоговое окно​
​ к числовому формату,​ этого можно использовать,​

Получение текущей даты и времени с сервера в интернете

Функция GetRealTime выполняет HTTP-запрос к заданному серверу,
и из заголовка Date ответа сервера берёт текущее время и дату.

Сделано на примере сервера Яндекса (их сайт почти всегда доступен, и работает очень быстро)

Функция полезна, когда надо получить реальную дату (а не ту, которая выставлена на компе), — например, для вычисления оставшегося времени использования trial-версии программы.

Код функции GetRealTime:

  • 10652 просмотра

Комментарии

GMT_Time = CDate(Replace(GMT_Time, m$, mv$)) вместо того, что с Format?
Антону в сообщении от «8 Сен 2014 — 13:21» не пришлось бы изобретать

Добрый день,
Скажите пожалуйста, а как сделать так, что бы отображалось только время, без даты?

Еще раз добрый день,

Я вроде разобрался. Если заменить «.» на «/» в строке:
GMT_Time = Replace(GMT_Time, » » & m$ & » «, «.» & Format(mv$, «00») & «.»)
. то работает в обоих кодировках

С уважением к вам и вашей работе,
Антон

Добрый день, Игорь!

Извините, совсем не хотел вас обидеть. Я часто полюзуюсь вашими макросами и они отличные. Clear/Clean — моя опечатка, добавлял вручную, пока писал вам сообщение. В коде был Clear.

Я бы не стал лезть в макрос, если он бы у меня работал. Я только сейчас разобрался, в чем было несоответствие. Ваш макрос работает, если в Панели управления Windows выбран русский язык (Языки и региональные настройки — наверно так она должна называться в русском Windows). Я же использую раскладку UK, но с обычным представлением даты DD/MM, а не наоборот как у британцев. При этой кодировке я получаю вместо даты — «00:00:00»

Как можно изменить ваш макрос, чтобы он отображал дату вне зависимости от языковых настроек?

С уважением к вам и вашей работе,
Антон

Антон, вот есть на сайте функция, она работает (в этом можно убедиться)
Вы, зачем-то, её переделываете, допуская синтаксические ошибки, — а потом жалуетесь, что не работает.
Нафига переделывать то, что работает? 5 строк сэкономили?

зачем менять Err.Clear на Err.Clean .
зачем вырезать из функции 2 нужные строки?

оставьте функцию как есть (если хотите, чтобы все работало), — и не занимайтесь ерундой.

Игорь, еще раз добрый день!

Проверил вашу фунцию GetRealTime такой как она есть в Excel2003 и 2010
получил ответ — 00:00:00
Отключил игнирорование ошибок — получил «Run-time error ’13’. Type mismatch»

Очень нужна ваша помощь!
Мне очень нужно получить реальную дату из инета в формате «дата», напр. 05/09/14

Заранее огромное спасибо!

С уважением, Антон

Добрый день, Игорь!

Очень нужна ваша помощь со следующим кодом (код ваш, но был немножко подредактирован)

Function Ctrlkb() As Date
On Error Resume Next: Err.Clean: Dim http As Object, URL$, colum$, m$, mv$: Set http = CreateObject(«Microsoft.XMLHTTP»)
URL$ = «http://ya.ru/»: http.Open «GET», URL$, False: http.Send: colum = http.GetResponseHeader(«Date»)
Set http = Nothing: If Not (colum Like «. *# . #### ##:##:##*GMT*») Then Exit Function
colum = Trim(Split(colum, «,»)(1)): colum = Trim(Split(colum, «GMT»)(0)): colum = Trim(Left(colum, 11)): Ctrlkb = CDate(colum)
End Function

На некоторых машинах нормально выдает дату нужном формате «Дата» 🙂

на других — «0:00:00»
Отключаем «On Error Resume Next: Err.Clean»
получаем «Run-time error ’13’. Type mismatch»
или «Run-time error ’70’. Permission denied»

Может быть что либо отключено в Excel?

С уважением, Антон

Пользовательские функции автоматически не пересчитываются.

Добавьте первой строкой в функцию

Здравствуйте,
столкнулся с проблемой: данный макрос автоматически не обновляет дату из интернета.
Ф-ция getrealtime(3) находится на скрытом и закрытом от редактирования листе. Аналогичная ф-ция сегодня() работает на таком листе. Как можно настроить getrealtime для автоматического обновления даты при открытии файла, а не только при вводе в ячейку? Причем передсчет формул включен, но тоже не помогает.

Ссылка на основную публикацию
Adblock
detector