Remkomplekty.ru

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

Vba excel date

Урок 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.

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

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

Привет Эт снова я.. по сути программа написанна, но в ней один косяк.

Надо написать программу, определяющую сколько дней прошло со дня вашего рождения.

Вот текст программы

Работа с датой на VBA
Здравствуйте! Есть книга, состоящая из 12 листов (названия месяцев). Содержание каждого листа.

Читать еще:  Таблица цветов vba excel

VBA в Excel: работа с датой
Вот несколько вопросов начинающего: — есть ли в VBA (используется в Excel от MSOffice 2000).

Работа с датой. Как записать только квартал и год?
Вопрос такой: В таблице сохраняю дату Формат поля — Краткий формат даты Маска ввода -.

Операции с датой
программа спрашевает имя и дату раждения. после того как мы это вывели программа показывает сколько.

Понимаю, что коряво, но красоту лень наводить

тож самое.. сам попробуй.. введи в дату рождения 1.125 или подобное.

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

Понимаю, что коряво, но красоту лень наводить

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

Добавлено через 15 минут
Да, как на счёт такого кода?

Добавлено через 15 минут
Да, как на счёт такого кода?

не вариант..))) не работает.

Добавлено через 2 минуты
Пользователю конечно можно написать, но кто сказал, что он будет соблюдать это «условие»?

И потом, как сказал Toxa33rus, сверяйте попадает ли она в диапазон ((сейчас — 100 лет) < userDay < (сейчас - 3 года). Всего три вложенных условия!

P.S. ИМХО, можно цифру 100 увеличить, чтоб не выглядеть совсем пессимистом.

не вариант..))) не работает.

Добавлено через 2 минуты
Пользователю конечно можно написать, но кто сказал, что он будет соблюдать это «условие»?

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

Счетчик с датой
Добрый день! Веду таблицу в Excel и решил автоматизировать процесс внесения данных в таблицу. Но.

Формула с датой
Дорогие форумяне! помогите с формулой нужно высчитывать разницу между текущим днем и прошлым .

Колонтитул с динамической датой
Задача: колонтитул в правом верхнем углу рабочего листа имеет заголовок "Неделя от: ". после.

Добавление столбца с датой в цикле
Всем доброго времени суток! Я, как обычно, нуждаюсь в вашей помощи..потому что спустя сутки я не.

VBA-Excel: Date-Time Functions – DateAdd()

by SJ · Published December 13, 2013 · Updated January 30, 2015

The DateAdd () function adds the specified time interval to the date and returns a Variant (Date)

DateAdd(interval,number,date)

    • interval
      • Manda­tory
      • Type: String expression
      • The time interval you want to add
  • number
    • Manda­tory
    • Type: Numeric
    • The number of intervals you want to add
  • date
    • Manda­tory
    • Type : Date
    • Date in which the interval will be added

Example:

Share this:

Like this:

You may also like.

VBA-Excel: Date-Time Functions – IsDate()

December 8, 2013

by SJ · Published December 8, 2013 · Last modified January 30, 2015

VBA-Excel: Date-Time Functions – Timer()

by SJ · Published June 30, 2014 · Last modified January 30, 2015

VBA-Excel: Date-Time Functions – WeekDay() and WeekDayName()

by SJ · Published June 19, 2014 · Last modified January 30, 2015

10 Responses

Using Excel 2013, I have not been able to get the Weekday interval (“W”) to work as advertised. It does not appear to behave any differently than Day (“D”).

Have you experienced different results?

Cud you please provide me the code you hv written? i will check it out.
does you code works for DatePart() function?
http://excel-macro.tutorialhorizon.com/vba-excel-date-time-functions-datepart/

I used a slightly modified version of your code:
Function FnDateAdd()

strDate = CDate(“January 8, 2014”)

strNewDate = DateAdd(“w”, -5, strDate)

I expected to see a result of “1/1/2013”, which is 5 weekdays (work days) before today. But I got “1/3/2013” as a result.

My end goal is to set several different variables as different date values, relative to the current date. The challenge I’m facing is accounting for weekends and holidays. There doesn’t seem to be an easy way to do this. I can send you all of my code, if you like.

Yes, i checked both “W” and “D” are working in same manner.
but still we can do something about the objective you want to achieve..

Here is my understanding abt ur problem
– from the current date, you want to do a task on each day, till the specified period (excluding weekends) ..
i just came up with the small piece of code for this…

Dim strDate
Dim mainWorkBook As Workbook
Dim intCounter

intCounter = 1
Set mainWorkBook = ActiveWorkbook

For i = Date To DateAdd(“m”, 1, Date) ‘ your specific period
strDay = Format(i, “dddd”)
If strDay “Saturday” And strDay “Sunday” Then
mainWorkBook.Sheets(“Sheet1”).Range(“A” & intCounter) = i
mainWorkBook.Sheets(“Sheet1”).Range(“B” & intCounter) = strDay
intCounter = intCounter + 1
End If
Next

Result :
08-01-2014 Wednesday
09-01-2014 Thursday
10-01-2014 Friday
13-01-2014 Monday
14-01-2014 Tuesday
15-01-2014 Wednesday
16-01-2014 Thursday
17-01-2014 Friday
20-01-2014 Monday
21-01-2014 Tuesday
22-01-2014 Wednesday
23-01-2014 Thursday
24-01-2014 Friday
27-01-2014 Monday
28-01-2014 Tuesday
and so on.

I am not saying this a best solution but still can be used as a work around.
Please correct me if my understanding is correct

Each day I’m trying to copy data from an existing spreadsheet (2014-Jan-06_Outages.xlsx) into a new version of the existing spreadsheet (2014-Jan-07_Outages.xlsx). There are several tabs within the spreadsheet – I copy the most recent, delete the prior day’s tab (2014-Jan-03), and create a new tab with all of the formulas I need to process today’s work (today is really yesterday, as we’re reconciling data posted yesterday).

Читать еще:  Vba excel типы переменных

Here’s what I’ve been trying:
Version 1 (does not account for weekends):
Dim CurrDate, LastDate, PrevDate, PriorDate
Dim FilePath, ExtractFile As String
CurrDate = Format(Date, “dd-mmm-yyyy”)
LastDate = Format(DateAdd(“w”, -1, CurrDate), “yyyy-mmm-dd”)
PrevDate = Format(DateAdd(“w”, -2, CurrDate), “yyyy-mmm-dd”)
PriorDate = Format(DateAdd(“w”, -3, CurrDate), “yyyy-mmm-dd”)
FilePath = “Q:TransferJuneVBA”
ExtractFile = “unrecon.csv”

‘ Open spreadsheet
Workbooks.Open Filename:=FilePath & PrevDate & “_Outages.xlsx”
‘ Save as new file name
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=FilePath & LastDate & “_Outages.xlsx”
Application.DisplayAlerts = True

Version 2 (accounts for weekends, but won’t open the spreadsheet – I get the following error message: “Sorry, we couldn’t find ‘Q:TransferJuneVBA2014-01-06_Outages.xlsx”. Is it possible it was moved, renamed or deleted?” – even though the file does exist, and version 1 can successfully open the file):
Dim CurrDate, LastDate, PrevDate, PriorDate As String
Dim FilePath As String

Application.DisplayAlerts = False
Sheets(“Dates”).Delete
Application.DisplayAlerts = True
Sheets.Add After:=Worksheets(“sheet1”)
Sheets(“Sheet2”).Name = “Dates”
Range(“A3”) = “TODAY”
Range(“B3”).FormulaR1C1 = “=today()”
Range(“A4”) = “
Range(“B4”).FormulaR1C1 = “=workday(R[-1]C,-1,R9C2:R17C2)”
Range(“A5”) = “
Range(“B5”).FormulaR1C1 = “=workday(R[-2]C,-2,R9C2:R17C2)”
Range(“A6”) = “-1”
Range(“B6”).FormulaR1C1 = “=workday(R[-3]C,-3,R9C2:R17C2)”
Range(“A8”) = “Holidays”
Range(“A9”) = “New Years Day”
Range(“B9”) = “1/1/2014”
Range(“A10”) = “MLK Day”
Range(“B10”) = “1/20/2014”
Range(“A11”) = “Washington’s Birthday”
Range(“B11”) = “2/17/2014”
Range(“A12”) = “Good Friday”
Range(“B12”) = “4/18/2014”
Range(“A13”) = “Memorial Day”
Range(“B13”) = “5/26/2014”
Range(“A14”) = “Independence Day”
Range(“B14”) = “7/4/2014”
Range(“A15”) = “Labor Day”
Range(“B15”) = “9/1/2014”
Range(“A16”) = “Thanksgiving Day”
Range(“B16”) = “11/27/2014”
Range(“A17”) = “Christmas”
Range(“B17”) = “12/25/2014”
Columns(“A:A”).Font.Bold = True
Columns(“B:B”).NumberFormat = “yyyy-mmm-dd”

‘Identify source for dates
Sheets(“Dates”).Select
CurrDate = Format(Range(“B3”), “yyyy-mmm-dd”)
LastDate = Format(Range(“B4”), “yyyy-mm-dd”)
PrevDate = Format(Range(“B5”), “yyyy-mm-dd”)
PriorDate = Format(Range(“B6”), “yyyy-mm-dd”)
FilePath = “Q:TransferJuneVBA”
ExtractFile = “unrecon.csv”

‘ Open spreadsheet
Workbooks.Open Filename:=FilePath & PrevDate & “_Outages.xlsx”
‘ Save as new file name
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=FilePath & LastDate & “_Outages.xlsx”
Application.DisplayAlerts = True

My goodness. A conference call with some colleagues helped me identify my error.

My date format was not consistent in the last section:

Cur­rDate = Format(Range(“B3”), “yyyy-mmm-dd”)
Last­Date = Format(Range(“B4”), “yyyy-mm-dd”) sumitjain says:

Glad you found out, i was breaking my head into it, even i missed it.

my requirement is:

i need to extract todays’ date and add 3 days to it and post it to a VBA form in below format:

Todays date: 2014-03-28
Output: 2014-03-31

Its critical to note that , say if todays date was 30th. then if you add three days it rolls over to next month. how do we handle this?

Dateadd() Function will handle itself. Use Now () function to get the today’s date and time. Change it ur format u need. Then add 3 days. Clear?

how do i use a variable in the number part of the function?

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

Привет Эт снова я.. по сути программа написанна, но в ней один косяк.

Надо написать программу, определяющую сколько дней прошло со дня вашего рождения.

Вот текст программы

Работа с датой на VBA
Здравствуйте! Есть книга, состоящая из 12 листов (названия месяцев). Содержание каждого листа.

VBA в Excel: работа с датой
Вот несколько вопросов начинающего: — есть ли в VBA (используется в Excel от MSOffice 2000).

Работа с датой. Как записать только квартал и год?
Вопрос такой: В таблице сохраняю дату Формат поля — Краткий формат даты Маска ввода -.

Операции с датой
программа спрашевает имя и дату раждения. после того как мы это вывели программа показывает сколько.

Понимаю, что коряво, но красоту лень наводить

тож самое.. сам попробуй.. введи в дату рождения 1.125 или подобное.

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

Понимаю, что коряво, но красоту лень наводить

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

Добавлено через 15 минут
Да, как на счёт такого кода?

Добавлено через 15 минут
Да, как на счёт такого кода?

не вариант..))) не работает.

Добавлено через 2 минуты
Пользователю конечно можно написать, но кто сказал, что он будет соблюдать это «условие»?

И потом, как сказал Toxa33rus, сверяйте попадает ли она в диапазон ((сейчас — 100 лет) < userDay < (сейчас - 3 года). Всего три вложенных условия!

P.S. ИМХО, можно цифру 100 увеличить, чтоб не выглядеть совсем пессимистом.

не вариант..))) не работает.

Добавлено через 2 минуты
Пользователю конечно можно написать, но кто сказал, что он будет соблюдать это «условие»?

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

Счетчик с датой
Добрый день! Веду таблицу в Excel и решил автоматизировать процесс внесения данных в таблицу. Но.

Формула с датой
Дорогие форумяне! помогите с формулой нужно высчитывать разницу между текущим днем и прошлым .

Колонтитул с динамической датой
Задача: колонтитул в правом верхнем углу рабочего листа имеет заголовок "Неделя от: ". после.

Добавление столбца с датой в цикле
Всем доброго времени суток! Я, как обычно, нуждаюсь в вашей помощи..потому что спустя сутки я не.

VBA Date Function

Excel VBA DATE Function

VBA Date is a Date and Time function, it returns only the current date as per the system date you are using, 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 date.

Читать еще:  Excel if then

In excel we cannot live without some of the functions and “VBA Date” is one of those function. If you are a frequent user of excel worksheet then you must be aware of a function called “TODAY ()” which will return current date as per the system date.

The date is a very simple function and it returns only the current date as per the system date you are using. This works very similar to our worksheet function “TODAY” but not volatile in nature.

The syntax of DATE function is very simple because it has no argument to supply and includes only empty parenthesis.

Parenthesis are there just to explain the function when you use the function no need of entering parenthesis.

How to use Excel VBA Date Function?

Example #1

Assume you want to insert the current date in cell A1 then follow below steps to write the code to insert the current date in cell A1.

Step 1: Create a macro name.

Code:

Step 2: Since we need to store the current date in cell A1 our code will be Range (“A1”).Value.

Code:

Step 3: In cell A1 we need the current date, so use DATE function.

Code:

Step 4: Ok, we are done. Let’s run this code now by pressing the F5 key or you can also run the code manually as shown in the below screenshot. We will get the current date in cell A1.

So, when I am writing this code current date in my system is “15 th March 2019”.

Note: Format of your date depends on your windows settings. Anyway, you can change the format of the date under format cells.

Example #2

Assume you are an LIC agent and you have several customers to deal with. One of the key objects is to know whose payment due is on today so that you can call them and collect the payment immediately.

Assume below is the list of customers you have in your database.

I have already written a code which will notify you as soon as you open the excel file.

Code:

Copy the above code and paste in the VBA module.

Now double click on “This Workbook” option.

Now select “Workbook” from the above drop down.

As soon as you select the option “Workbook” you can see a private macro automatically opens.

Here macro name says “Workbook_Open ()” this means whenever this workbook opens what you have to do. Whenever this workbook opens we need to run the macro we have created.

So, here we need to call our macro we have created by its name. In the above code, our macro name is “Due_Notifier”.

Code:

Now save this workbook and close it.

After closing it, open the workbook and see the magic.

Now I will open….

Wow. It shows me customer name and their due amount for the current date.

Customer Name is “Amar” and the due amount is “20883”. The reason why it is showing this customer name because the due date for Mr Amar is 15 th March 2019 i.e. Today.

Now click on Ok, it will show other customer names if the due date is on today.

It is showing Mr Arvind name, his due date is also on 15 th March 2019.

Now, you can easily identify the customer names as soon as you come to the office. One of the big headaches is gone.

Similarly, I have created one more excel macro which will send auto birthday emails from your outlook.

Example #3

Assume you are in an “Employee Engagement Team” and you are responsible to send birthday emails to your employees. Identify and sending the email to each and every one separately is a painful job.

Hello, my dear friend doesn’t worry I have created a macro for you to send the auto birthday emails to your employees.

I have created some data to test and below is the image of the same.

You just need to update the employee master according to the headings of the table. Below is the code to send the emails.

Copy the below code and paste in the module.

As soon as you come to the office just open the file and run this code, it will automatically send birthday wishes to the respective email id’s.

Note: You should have Outlook configured in your system.

Recommended Articles

This has been a guide to VBA Date Function. Here we learn how to use Date Function in VBA along with some simple to advanced examples. We also saw one of the projects where we created one macro that sends auto birthday emails from your outlook. Below are some useful excel articles related to VBA –

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