Remkomplekty.ru

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

Excel vba текущее время

Урок 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.
Читать еще:  Перевести формат ods в excel

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

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

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

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

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

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

  • 10660 просмотров

Комментарии

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 для автоматического обновления даты при открытии файла, а не только при вводе в ячейку? Причем передсчет формул включен, но тоже не помогает.

Excel vba текущее время

malaxov
Многовато лишнего, зачем то идет копирование выделенной ячейки? (в той что только что вставили дату)

если просто вставить дату и активировать правую ячейку то

Private Sub CommandButton2_Click()
ActiveCell.FormulaR1C1 = «=TODAY()» ‘вставляем дату
ActiveCell.Offset(0, 1).Activate ‘активируем соседнюю справа ячейку
End Sub

V3
Многовато лишнего, зачем то идет копирование выделенной ячейки?

Дык, он хочет не формулу, а значение вставить.

Private Sub CommandButton2_Click()
ActiveCell = Date ‘вставляем дату
ActiveCell.Offset(0, 1).Activate ‘активируем соседнюю справа ячейку
End Sub

И еще такой небольшой вопросик: данный макрос используется в таком файле, в который нужно вносить платежки. Для облегчения труда «оператора платежек» добавлены две кнопки — «добавить строку» и «сегодня» (которая вставляет дату и отодвигает курсор для ввода суммы). А как предусмотреть такую возможность для автоматического расчета комиссии, т.е. в ячейку G10 вводится сумма, а макрос автоматически определяет ту ячейку, где занесена комиссия (в данном случае это E4), т.е. первую заполненную в столбце E выше от ряда занесения суммы, а затем умножает вводимую сумму на значение комиссии, делит произведение на 100 и записывает значение в соответствующую соседнюю ячейку. А также желательно было бы, чтобы макрос применялся только к столбцам, где заполненной является самая первая ячейка в ряду. В данном случае в ячейке G1 занесены значение месяца и года.
Сложная задачка? 🙂

Читать еще:  Cells find vba excel описание

К сообщению приложены файлы: 1.png, 700×500, 59Кb

Что вот так если в G внесены данные ищем ближайшее верхнее по столбцу Е перемножаем и делим на 100
записывает значение в соответствующую соседнюю ячейку это в какую? я положил данные в столбец Н
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address Like «*G*» Then
While Target.Offset(-i, -2).Value = Empty
i = i + 1
Wend
Target.Offset(0, 1).Value = Target.Value * Target.Offset(-i, -2).Value / 100
End If
End Sub

желательно было бы, чтобы макрос применялся только к столбцам, где заполненной является самая первая ячейка в ряду
Первая ячейка объединненая и она определяется верхней левой ячейкой т.е. ее адрес не G1, а F1. Надо проверять есть ли какая либо запись в ней? я правильно понимаю

Добавление от 02.07.2006 22:38:

Подправил согласно комментариям
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address Like «*G*» And Cells(1, 7).Value <> Empty Then
While Target.Offset(-i, -2).Value = Empty And Target.Offset(-i, -2).Row > 1
i = i + 1
Wend
Target.Offset(0, 1).Value = Target.Value * Target.Offset(-i, -2).Value / 100
End If

Пара условий:
1. Не вводить текст в столбец G, должны вводиться цифры, не предусмотрена проверка на ввод
2. Нельзя выделять несколько ячеек в столбце G и нажимать Del, не предусмотрена проверка выделения и изменения сразу нескольких ячеек
3. Сделана проверка только есть данные в столбце Е или нет (иначе можно выйти выше первой строки)

Excel vba текущее время

Время и дата в VBA Excel

Тема: Время и дата в VBA Excel

Cформировать представление о работе с датой

Cформировать представление об функциях работы с датой и временем

Сформировать навыки работы с датой и временем в VBA.

Продолжить развивать творческое мышление и воображение.

Продолжить развивать речь (обогащение и усложнение словарного запаса)

Продолжить развивать память

Воспитание бережного отношения к школьному имуществу

Тип урока: комбинированный

Формы обучения: коллективная, индивидуальная

Дидактические единицы: тип Date, функции для работы с датой и временем

1.Оргмомент и целеполагание

Здравствуйте! Сегодня на уроке вы узнаете, как работать с датой и временем в VBA Excel.

2.Объяснение нового материала

Объектно-ориентированное программирование позволяет создавать графический интерфейс разрабатываемых приложений на основе Для работы с датой в VBA предусмотрен специальный тип Date. Он занимает 8 байт и хранит дату во внутреннем представлении VB. Чтобы преобразовать дату и время из строки в этот формат, можно воспользоваться функциями DateValue и TimeValue.

Например вывод даты с помощью диалогового окна.

Sub DateConversionTest()
Dim TestDate As Date
TestDate = DateValue(«2/3/98»)
MsgBox (Str(Year(TestDate)))
End Sub

Или в случае со временем:
Sub Test() Dim MyTimeDate As Date
MyTimeDate = DateValue(«7/2/93») + TimeValue(«11:12:13»)
MsgBox Str(Minute(MyTimeDate))
MsgBox Str(Year(MyTimeDate))
End Sub

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

Date – определяет текущую дату по системному времени

Time() – определить текущее время

Month — определяет номер месяца по дате

MonthName(номер месяца) – определяет название месяца по его номеру

Day — определяет день по дате

Year(date) — определяет год по дате

Hour(Time()) — определяет час по времени час

Minute(Time()) — определяет минуты по времени

Second(Time()) — определяет секунды по времени

WeekDay (Date, vbMonday) — определяет номер дня недели, начиная с указанного

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

DateDiff(“m”,d1,d2) – определяет разницу между двумя датами d2 и d1 в указанных единицах измерения (“YYYY” – в годах; “m” – месяцах, “Y” — в днях; “h” – в часах; “n” – в минутах; “s” – в секундах)

Sub Test()
Dim MyDate As Date
MyDate = DateValue(«3/7/89»)
If (WeekDay(MyDate) = vbSunday) Then MsgBox («Sunday»)
End Sub

vbSunday, vbMonday, . — предопределенные константы для дней недели.

Тема: Время и дата в VBA Excel.

Цель: Создать календарь, всплывающий по нажатию сочетания клавиш, с помощью которого можно вводить дату в выбранную заранее ячейку.

Оборудование: Компьютер, табличный процессор Microsoft Excel.

Перечень заданий:
Задание1. Создать форму
Задание2. Написать код для выполнения программы

Откройте редактор Visual Basic через меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor).

Создайте в нем новую пустую пользовательскую форму, выбрав в меню Insert — User form. Автоматически должна появиться панель Toolbox:


(Если не появилась — жмите в меню View — Toolbox.)

На этой панели представлены различные управляющие элементы окон: кнопки, списки, счетчики и т.д. Но нам нужен элемент (календарь), которого пока на панели не видно. Чтобы добавить его, щелкните по серому фону панели правой кнопкой мыши и выберите Additional Controls. Появится вот такое окно:

Читать еще:  Как захватить видео

В нем надо найти и отметить Элемент управления Календарь 11.0 (Calendar Control 11.0). Версии могут отличаться (11.0, 10.0 и т.д.) в зависимости от версии Microsoft Office, это несущественно. После нажатия на ОК на панели появится новая кнопка – Calendar:

Щелкните по ней, а затем нарисуйте календарь на поле формы, удерживая нажатой левую кнопку мыши:

Теперь переключитесь в режим ввода программного кода созданной формы (меню View — Code) и скопируйте туда этот текст :
Private Sub Calendar1_Click()
ActiveCell = Calendar1.Value
ActiveCell.NumberFormat=»dd/mm/yy»
End Sub
Private Sub UserForm_Activate()
Me.Calendar1.Value = Date
End Sub

Теперь надо заставить Excel показывать нам созданную форму, когда мы этого захотим. Для этого вставьте новый модуль (Insert — Module) и скопируйте туда этот текст:

Sub ShowCalendar()
UserForm1.Show
End Sub

Сегодня на уроке мы научились работать с датой и временем. А также сделали интересную практическую работу облегчающую ввод дат на лист в MS Excel.

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

VBA Time Function

Excel VBA Time Function

VBA Time Function returns the current time, also the important thing to note is that this function has no arguments in it whatsoever, another important factor to remember is that this function returns the current system time. Using this function we can actually find the actual time taken by the line of codes to complete the process.

TIME is a kind of volatile function, it does not have any syntax to it.

We also have a similar function in excel – NOW () function which inserts both current time as well as the current date in the spreadsheet

TIME ()

We just need to enter the function, in fact, no need to parenthesis to enclose just TIME is enough to insert the current time. The result given by the TIME function is in the string.

How to Use TIME Function in VBA?

Let me show you the example of a simple TIME function. Follow the below steps to create code to use the TIME function.

Step 1: Create a macro.

Code:

Step 2: Declare a variable as String.

Code:

Step 3: Assign a value to this variable through the TIME function.

Code:

Step 4: Now show the result in the message box.

Code:

Run this code using F5 key or manually we will get the current time.

So, when I run this code time was 11.51.54 AM.

Alternative of Now() Function

Combination of Date & Time as an Alternative to NOW Function

As I told at the beginning of the article NOW can insert current date & time. However we can use two other functions as an alternative function to NOW function, those two functions are VBA DATE & VBA TIME functions.

VBA Date will return current date & Time will return current time, so this makes the NOW function. Below is a set of code which will insert the current date & time in cell A1.

Code:

This code will insert the current date & time in cell A1.

We can also apply format to these values using FORMAT function. The below code will format the date & time.

Code:

Now the result of this code is as follows.

Track Your Workbook Open Records using Time Function in VBA

Often times we need to know our workbook opening time-frequency. There is a situation where we open the workbook quite often and we make some changes. By tracking the workbook opening time & date we can track workbook opening time.

Create a new sheet and rename it as “Track Sheet”.

Step 1: Double click on This workbook from VBE Editor.

Step 2: Select the workbook from the object drop-down list.

Step 3: As soon as you select this option you can see new macro automatically created by itself in the name “Workbook_Open()”.

Step 4: Inside this macro, we will need to write a code to track the workbook opening date & time.

I have already written code and below is the code for you.

Code:

This will record your workbook opening times like the below one.

Recommended Articles

This has been a guide to VBA Time Function. Here we learned how to use VBA Time Function and also we learned the Combination of date and time as an alternative to Now() Function and tracks the workbook open records along with examples and downloadable excel sheet . Below are some useful excel articles related to VBA –

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