Vba функции: Оператор Function (VBA) | Microsoft Learn
(1/2)
End Select
End Function
Sub InstallFunc1()
Application.MacroOptions Macro:=”ЗВТ”, _
Description:= ”При F находит величину силы тяготения, ” & _
”при М – массы2, при R — расстояния”
End Sub
Задача 1.1. Два астероида массами 20 т и 30 т приблизились к друг другу на расстояние 250 м. Какова сила их взаимного гравитационного притяжения?
Технология решения. Вызывается функция ЗВТ, вводятся числовые данные и ”F”, что ниже возвращает результат (рис. 1).
Рис. 1. Применение функции ЗВТ в задаче 1.1
Задача 1.2. Искусственный спутник Земли массой 85 кг движется по круговой орбите на расстоянии 6600 км от центра Земли. Какое ускорение имеет спутник благодаря силе гравитации?
Технология решения. Вызывается функция ЗВТ и вводятся данные (рис. 2).
Рис. 2. Применение функции ЗВТ в задаче 1.2
Задача 1.3. На каком расстоянии от центра Земли ускорение свободного падения равно 3 м/с2?
Технология решения. 2 / Ускор_м_с2
End Select
End Function
Sub InstallFunc2()
Application.MacroOptions Macro:=”ВРАЩЕНИЕ”, Description:= _
”Возвращает при A величину ускорения, ” & _
”при V – скорости, при R — радиуса”
End Sub
Задача 2.1. При работе стиральной машины поверхность ее барабана, находящаяся на расстоянии 21 см от оси вращения, движется вокруг этой оси со скоростью 15 м/с. Определите ускорение, с которым движутся точки поверхности барабана.
Технология решения. Вызывается функция ВРАЩЕНИЕ, вводятся данные задачи и “A”, ниже появляется результат (рис. 4).
Рис. 4. Применение функции ВРАЩЕНИЕ в задаче 2.1
Задача 2.2. Применяя функцию ВРАЩЕНИЕ, найдите 1-ю космическую скорость.
Технология решения. Вызывается функция ВРАЩЕНИЕ, вводятся числовые данные и “V” (рис. 5).
Рис. 5. Применение функции ВРАЩЕНИЕ в задаче 2.2
3. ЗАКОН СОХРАНЕНИЯ ПОЛНОЙ ЭНЕРГИИ
Полная механическая энергия E материального тела находится по формуле:
. (1/2)
End Select
ЗСПЭ=Round(ЗСПЭ,4)
End Function
Sub InstallFunc3()
Application.MacroOptions Macro:=”ЗСПЭ”, Description:= _
”Возвращает при Е величину полной энергии, ” & _
”при M – массы, при H – высоты, при V — скорости ”
End Sub
Задача 3.1. Тело массой 200 г падает с высоты 4 м. Применяя функцию ЗСПЭ, найдите скорость, которую оно будет иметь на высоте 1 м от земли.
Технология решения. 1. Вызывается функция ЗСПЭ и находится величина полной энергии в начальный момент времени:
Рис. 6. 1-е применение функции ЗСПЭ в задаче 3.1
2. Снова вызывается функция ЗСПЭ и находится скорость на высоте 1 м:
Рис. 7. 2-е применение функции ЗСПЭ в задаче 3.1
Содержание
Функции даты-времени в VBA. Работа с датой и временем
Функции даты и времени VBScript помогают разработчикам преобразовывать дату и время из одного формата в другой или выражать дату или время в формате, соответствующем определенному условию.
Содержание:
- Date
- CDate
- DateAdd
- DateDiff
- DatePart
- DateSerial
- FormatDateTime
- IsDate
- Day
- Month
- Year
- MonthName
- WeekDay
- Now
- Hour
- Minute
- Second
- Time
- Timer
- TimeSerial
- TimeValue
Date
Функция возвращает текущую системную дату.
Синтаксис
date()
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() Dim a as Variant a = date() msgbox "The Value of a : " & a End Sub
Когда вы выполняете функцию, она производит следующий вывод.
The Value of a : 19/07/2014
Функция, которая возвращает текущую системную дату.
CDate
Функция преобразует действительное выражение даты и времени для ввода даты.
Синтаксис
cdate(date)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() Dim a As Variant Dim b As Variant a = CDate("Янв 01 2020") MsgBox ("The Value of a : " & a) b = CDate("31 Дек 2050") MsgBox ("The Value of b : " & b) End Sub
Когда вы выполняете функцию, она производит следующий вывод.
The Value of a : 1/01/2020
The Value of b : 31/12/2050
Функция, которая преобразует данный вход в дату.
DateAdd
Функция, которая возвращает дату, к которой был добавлен указанный временной интервал.
Синтаксис
DateAdd(interval,number,date)
Параметр/Описание
- Интервал — требуемый параметр. Он может принимать следующие значения.
- d — день года
- м — месяц года
- y — год года
- yyyy — year
- w — день недели
- ww — неделя
- q — квартал
- час — час
- м — минута
- s — секунда
- Номер — требуемый параметр. Он может принимать как положительные, так и отрицательные параметры.
- Дата — требуемый параметр. Вариант или литерал, представляющий дату добавления интервала.
пример
Sub Constant_demo_Click() ' Positive Interal date1 = 1 - Jan - 2013 MsgBox ("Line 1 : " & DateAdd("yyyy", 1, date1)) MsgBox ("Line 2 : " & DateAdd("q", 1, date1)) MsgBox ("Line 3 : " & DateAdd("m", 1, date1)) MsgBox ("Line 4 : " & DateAdd("y", 1, date1)) MsgBox ("Line 5 : " & DateAdd("d", 1, date1)) MsgBox ("Line 6 : " & DateAdd("w", 1, date1)) MsgBox ("Line 7 : " & DateAdd("ww", 1, date1)) MsgBox ("Line 8 : " & DateAdd("h", 1, "01-Янв-2013 12:00:00")) MsgBox ("Line 9 : " & DateAdd("n", 1, "01-Янв-2013 12:00:00")) MsgBox ("Line 10 : " & DateAdd("s", 1, "01-Янв-2013 12:00:00")) ' Negative Interval MsgBox ("Line 11 : " & DateAdd("yyyy", -1, date1)) MsgBox ("Line 12 : " & DateAdd("q", -1, date1)) MsgBox ("Line 13 : " & DateAdd("m", -1, date1)) MsgBox ("Line 14 : " & DateAdd("y", -1, date1)) MsgBox ("Line 15 : " & DateAdd("d", -1, date1)) MsgBox ("Line 16 : " & DateAdd("w", -1, date1)) MsgBox ("Line 17 : " & DateAdd("ww", -1, date1)) MsgBox ("Line 18 : " & DateAdd("h", -1, "01-Янв-2013 12:00:00")) MsgBox ("Line 19 : " & DateAdd("n", -1, "01-Янв-2013 12:00:00")) MsgBox ("Line 20 : " & DateAdd("s", -1, "01-Янв-2013 12:00:00")) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : 27/06/1895
Line 2 : 27/09/1894
Line 3 : 27/07/1894
Line 4 : 28/06/1894
Line 5 : 28/06/1894
Line 6 : 28/06/1894
Line 7 : 4/07/1894
Line 8 : 1/01/2013 1:00:00 PM
Line 9 : 1/01/2013 12:01:00 PM
Line 10 : 1/01/2013 12:00:01 PM
Line 11 : 27/06/1893
Line 12 : 27/03/1894
Line 13 : 27/05/1894
Line 14 : 26/06/1894
Line 15 : 26/06/1894
Line 16 : 26/06/1894
Line 17 : 20/06/1894
Line 18 : 1/01/2013 11:00:00 AM
Line 19 : 1/01/2013 11:59:00 AM
Line 20 : 1/01/2013 11:59:59 AM
Функция, которая возвращает дату, к которой был добавлен указанный временной интервал.
DateDiff
Функция, которая возвращает разницу между двумя заданными временными интервалами.
Синтаксис
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
Параметр/Описание
- Интервал — требуемый параметр. Он может принимать следующие значения.
- d — день года
- м — месяц года
- y — год года
- yyyy — year
- w — день недели
- ww — неделя
- q — квартал
- час — час
- м — минута
- s — секунда
- Date1 и Date2 — Необходимые параметры.
- Firstdayofweek — необязательный параметр. Задает первый день недели. Он может принимать следующие значения.
- 0 = vbUseSystemDayOfWeek — настройка API поддержки национальных языков (NLS)
- 1 = vbSunday — воскресенье
- 2 = vbMonday — понедельник
- 3 = vbTuesday — вторник
- 4 = vbWednesday — среда
- 5 = vbThursday — четверг
- 6 = vbFriday — пятница
- 7 = vbSaturday — суббота
- Firstdayofyear — необязательный параметр. Указывает на первый день года. Он может принимать следующие значения.
- 0 = vbUseSystem — настройка API поддержки национальных языков (NLS)
- 1 = vbFirstJan1 — начать с недели, в которой происходит 1 января (по умолчанию)
- 2 = vbFirstFourDays — Начните с недели, которая имеет не менее четырех дней в новом году
- 3 = vbFirstFullWeek — начните с первой полной недели нового года
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() Dim fromDate As Variant fromDate = "01-Янв-09 00:00:00" Dim toDate As Variant toDate = "01-Янв-10 23:59:00" MsgBox ("Line 1 : " & DateDiff("yyyy", fromDate, toDate)) MsgBox ("Line 2 : " & DateDiff("q", fromDate, toDate)) MsgBox ("Line 3 : " & DateDiff("m", fromDate, toDate)) MsgBox ("Line 4 : " & DateDiff("y", fromDate, toDate)) MsgBox ("Line 5 : " & DateDiff("d", fromDate, toDate)) MsgBox ("Line 6 : " & DateDiff("w", fromDate, toDate)) MsgBox ("Line 7 : " & DateDiff("ww", fromDate, toDate)) MsgBox ("Line 8 : " & DateDiff("h", fromDate, toDate)) MsgBox ("Line 9 : " & DateDiff("n", fromDate, toDate)) MsgBox ("Line 10 : " & DateDiff("s", fromDate, toDate)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : 1
Line 2 : 4
Line 3 : 12
Line 4 : 365
Line 5 : 365
Line 6 : 52
Line 7 : 52
Line 8 : 8783
Line 9 : 527039
Line 10 : 31622340
Функция, которая возвращает разницу между двумя периодами времени.
DatePart
Функция, возвращающая определенную часть данной даты.
Синтаксис
DatePart(interval,date[,firstdayofweek[,firstweekofyear]])
Параметр/Описание
- Интервал — требуемый параметр. Он может принимать следующие значения.
- d — день года
- м — месяц года
- y — год года
- yyyy — year
- w — день недели
- ww — неделя
- q — квартал
- час — час
- м — минута
- s — секунда
- Date1 — обязательный параметр.
- Firstdayofweek — необязательный параметр. Задает первый день недели. Он может принимать следующие значения.
- 0 = vbUseSystemDayOfWeek — настройка API поддержки национальных языков (NLS)
- 1 = vbSunday — воскресенье
- 2 = vbMonday — понедельник
- 3 = vbTuesday — вторник
- 4 = vbWednesday — среда
- 5 = vbThursday — четверг
- 6 = vbFriday — пятница
- 7 = vbSaturday — суббота
- Firstdayofyear — необязательный параметр. Указывает на первый день года. Он может принимать следующие значения.
- 0 = vbUseSystem — настройка API поддержки национальных языков (NLS)
- 1 = vbFirstJan1 — начать с недели, в которой происходит 1 января (по умолчанию)
- 2 = vbFirstFourDays — Начните с недели, которая имеет не менее четырех дней в новом году
- 3 = vbFirstFullWeek — начните с первой полной недели нового года
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() Dim Quarter As Variant Dim DayOfYear As Variant Dim WeekOfYear As Variant Date1 = "2013-01-15" Quarter = DatePart("q", Date1) MsgBox ("Line 1 : " & Quarter) DayOfYear = DatePart("y", Date1) MsgBox ("Line 2 : " & DayOfYear) WeekOfYear = DatePart("ww", Date1) MsgBox ("Line 3 : " & WeekOfYear) MsgBox ("Line 4 : " & DatePart("m", Date1)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : 1
Line 2 : 15
Line 3 : 3
Line 4 : 1
Функция, возвращающая указанную часть заданного значения даты ввода.
DateSerial
Функция, которая возвращает дату для заданных параметров дня, месяца и года.
Синтаксис
DateSerial(year,month,day)
Параметр/Описание
- Год — требуемый параметр. Число от 100 до 9999 или числовое выражение. Значения от 0 до 99 интерпретируются как годы с 1900 по 1999 год. Для всех аргументов за другой год используйте полный четырехзначный год.
- Месяц — требуемый параметр. Он также может быть в форме выражения, которое должно варьироваться от 1 до 12.
- День — требуемый параметр. Он также может быть в форме выражения, которое должно варьироваться от 1 до 31.
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox(DateSerial(2013,5,10)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
10/05/2013
Функция, которая возвращает действительную дату для данного года, месяца и даты.
FormatDateTime
Функция, которая помогает разработчикам форматировать и возвращать действительное выражение даты и времени.
Синтаксис
FormatDateTime(date,format)
Параметр/Описание
- Дата — требуемый параметр.
- Формат — необязательный параметр. Значение, определяющее формат даты или времени, который будет использоваться. Он может принимать следующие значения.
- 0 = vbGeneralDate — Default
- 1 = vbLongDate — дата возврата
- 2 = vbShortDate — Дата возврата
- 3 = vbLongTime — возвращает время
- 4 = vbShortTime — возвращает время
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() d = ("2013-08-15 20:25") msgbox("Line 1 : " & FormatDateTime(d)) msgbox("Line 2 : " & FormatDateTime(d,1)) msgbox("Line 3 : " & FormatDateTime(d,2)) msgbox("Line 4 : " & FormatDateTime(d,3)) msgbox("Line 5 : " & FormatDateTime(d,4)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : 15/08/2013 8:25:00 PM
Line 2 : Thursday, 15 August 2013
Line 3 : 15/08/2013
Line 4 : 8:25:00 PM
Line 5 : 20:25
Функция, которая форматирует дату на основе поставляемых параметров.
IsDate
Функция, возвращающая логическое значение, независимо от того, является ли данный ввод датой.
Синтаксис
IsDate(expression)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox("Line 1 : " & IsDate("Nov 03, 1950")) msgbox("Line 2 : " & IsDate(#01/31/20#)) msgbox("Line 3 : " & IsDate(#05/31/20 10:30 PM#)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : True
Line 2 : True
Line 3 : True
Функция, возвращающая логическое значение, независимо от того, является ли поставленный параметр датой.
Day
Функция «День» возвращает число от 1 до 31, которое представляет день указанной даты.
Синтаксис
Day(date)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox(Day("2013-06-30")) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
30
Функция, которая возвращает целое число от 1 до 31, которое представляет день указанной даты.
Month
Функция Month возвращает число от 1 до 12, которое представляет месяц указанной даты.
Синтаксис
Month(date)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox(Month("2013-06-30")) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
6
Функция, которая возвращает целое число от 1 до 12, которое представляет месяц указанной даты.
Year
Функция Год возвращает целое число, которое представляет год указанной даты.
Синтаксис
Year(date)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox(Year("2013-06-30")) End sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
2013
Функция, которая возвращает целое число, которое представляет год указанной даты.
MonthName
Функция MonthName возвращает имя месяца для указанной даты.
Синтаксис
MonthName(month[,toabbreviate])
Параметр Описание
- Месяц — требуемый параметр. Он определяет номер месяца.
- Toabbreviate — необязательный параметр. Булевское значение, указывающее, следует ли сокращать имя месяца. Если оставить пустым, значение по умолчанию будет считаться False.
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox("Line 1 : " & MonthName(01,True)) msgbox("Line 2 : " & MonthName(01,false)) msgbox("Line 3 : " & MonthName(07,True)) msgbox("Line 4 : " & MonthName(07,false)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : Jan
Line 2 : January
Line 3 : Jul
Line 4 : July
Функция, которая возвращает имя определенного месяца за указанную дату.
WeekDay
Функция WeekDay возвращает целое число от 1 до 7, которое представляет день недели для указанной даты.
Синтаксис
Weekday(date[,firstdayofweek])
Параметр/Описание
- Дата — требуемый параметр. День недели вернет указанную дату. Firstdayofweek — необязательный параметр. Задает первый день недели. Он может принимать следующие значения. 0 = vbUseSystemDayOfWeek — настройка API поддержки национальных языков (NLS) 1 = vbSunday — воскресенье 2 = vbMonday — понедельник 3 = vbВперед — вторник 4 = vbWednesday — среда 5 = vbThursday — четверг 6 = vbFriday — пятница 7 = vbSaturday — суббота
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox("Line 1: " & Weekday("2013-05-16",1)) msgbox("Line 2: " & Weekday("2013-05-16",2)) msgbox("Line 3: " & Weekday("2013-05-16",2)) msgbox("Line 4: " & Weekday("2010-02-16")) msgbox("Line 5: " & Weekday("2010-02-17")) msgbox("Line 6: " & Weekday("2010-02-18")) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1: 5
Line 2: 4
Line 3: 4
Line 4: 3
Line 5: 4
Line 6: 5
Функция, которая возвращает целое число (от 1 до 7), которое представляет день недели в течение указанного дня.
WeekDayName
Функция WeekDayName возвращает имя дня недели за указанный день.
СинтаксисWeekdayName(weekday[,abbreviate[,firstdayofweek]])
Параметр — Описание
- Weekday — требуемый параметр. Номер дня недели.
- Toabbreviate — необязательный параметр. Булевское значение, указывающее, следует ли сокращать имя месяца. Если оставить пустым, значение по умолчанию будет считаться False.
- Firstdayofweek — необязательный параметр. Задает первый день недели.
- 0 = vbUseSystemDayOfWeek — настройка API поддержки национальных языков (NLS)
- 1 = vbSunday — воскресенье
- 2 = vbMonday — понедельник
- 3 = vbTuesday — вторник
- 4 = vbWednesday — среда
- 5 = vbThursday — четверг
- 6 = vbFriday — пятница
- 7 = vbSaturday — суббота
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox("Line 1 : " & WeekdayName(3)) msgbox("Line 2 : " & WeekdayName(2,True)) msgbox("Line 3 : " & WeekdayName(1,False)) msgbox("Line 4 : " & WeekdayName(2,True,0)) msgbox("Line 5 : " & WeekdayName(1,False,1)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : Tuesday
Line 2 : Mon
Line 3 : Sunday
Line 4 : Tue
Line 5 : Sunday
Функция, которая возвращает имя дня недели для указанного дня.
Now
Функция Now возвращает текущую системную дату и время.
Синтаксис
Now()
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() Dim a as Variant a = Now() msgbox("The Value of a : " & a) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод. The Value of a : 19/07/2013 3:04:09 PM
Функция, которая возвращает текущую системную дату и время.
Hour
Функция Hour возвращает число от 0 до 23, которое представляет час дня для указанной отметки времени.
Синтаксис
Hour(time)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox("Line 1: " & Hour("3:13:45 PM")) msgbox("Line 2: " & Hour("23:13:45")) msgbox("Line 3: " & Hour("2:20 PM")) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1: 15
Line 2: 23
Line 3: 14
Функция, которая возвращает целое число от 0 до 23, которое представляет часовую часть заданного времени.
Minute
Функция Minute возвращает число от 0 до 59, которое представляет минуту часа для указанной отметки времени.
Синтаксис
Minute(time)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox("Line 1: " & Minute("3:13:45 PM")) msgbox("Line 2: " & Minute("23:43:45")) msgbox("Line 3: " & Minute("2:20 PM")) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1: 13
Line 2: 43
Line 3: 20
Функция, возвращающая целое число от 0 до 59, которое представляет минутную часть данного времени.
Second
Функция возвращает число от 0 до 59, которое представляет вторую часть часа для указанной отметки времени.
Синтаксис
Second(time)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox("Line 1: " & Second("3:13:25 PM")) msgbox("Line 2: " & Second("23:13:45")) msgbox("Line 3: " & Second("2:20 PM")) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод. Line 1: 25
Line 2: 45
Line 3: 0
Функция, возвращающая целое число от 0 до 59, которое представляет собой секундную часть данного времени.
Time
Функция времени возвращает текущее системное время.
Синтаксис
Time()
пример
Sub Constant_demo_Click() msgbox("Line 1: " & Time()) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1: 3:29:15 PM
Функция, которая возвращает текущее системное время.
Timer
Функция таймера возвращает число секунд и миллисекунд с 12:00.
Синтаксис
Timer()
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox("Time is : " & Now()) msgbox("Timer is: " & Timer()) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Time is : 19/07/2013 3:45:53 PM
Timer is: 56753. 4
Функция, которая возвращает число секунд и миллисекунд с 12:00.
TimeSerial
Функция TimeSerial возвращает время для указанных часов, минут и вторых значений.
Синтаксис
TimeSerial(hour,minute,second)
Параметр/Описание
- Hour — обязательный параметр, который представляет собой целое число от 0 до 23 или любое числовое выражение.
- Minute — обязательный параметр, который представляет собой целое число от 0 до 59 или любое числовое выражение.
- Second — обязательный параметр, который представляет собой целое число от 0 до 59 или любое числовое выражение.
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox(TimeSerial(20,1,2)) msgbox(TimeSerial(0,59,59)) msgbox(TimeSerial(7*2,60/3,15+3)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
8:01:02 PM
12:59:59 AM
2:20:18 PM
Функция, которая возвращает время для конкретного ввода часа, минуты и секунды.
TimeValue
Функция TimeValue преобразует заданную входную строку в допустимое время.
Синтаксис
TimeValue(StringTime)
пример
Добавьте кнопку и добавьте следующую функцию.
Sub Constant_demo_Click() msgbox(TimeValue("20:30")) msgbox(TimeValue("5:15")) msgbox(TimeValue("2:30:58")) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
8:30:00 PM
5:15:00 AM
2:30:58 AM
Функция, которая преобразует входную строку в формат времени.
С уважением, авторы сайта Компьютерапия
Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!
готовых пользовательских функций VBA | Справка Excel
Этот раздел позволит вам ускорить ваш код VBA с помощью готовых функций, которые будут вставлены в модуль вашего проекта VBA.
Функция WriteToFile (имя файла в виде строки, данные в виде строки, необязательный путь в виде строки) 'Обзор 'Этот модуль можно использовать для записи данных в файл. Если не указать путь 'где должен находиться выходной файл путь к файлу, в котором находится модуль будет использоваться. При ошибке Возобновить Далее Затемнить ББ как рабочую книгу Установите WB = ThisWorkbook 'Если путь не указан, мы назначим его. Если Отсутствует(Путь) Тогда Путь = WB.Путь Путь = Путь & "" Конец, если ИмяФайла = Путь и ИмяФайла Dim fnum как целое число fnum = FreeFile ' Получить следующий свободный номер файла Open FileName For Append As #fnum 'Открыть файл для Append Print #fnum, Data & vbLf 'Запишите данные и добавьте перевод строки. Закрыть #фнум Завершить функцию
—
Функция LoadFile (FileName As String, Wsheet As String) Обзор: этот модуль можно использовать для загрузки текстового файла в Excel и записи вывода на рабочий лист. При ошибке Возобновить Далее Затемнить ББ как рабочую книгу Установите WB = ThisWorkbook Dim WS как рабочий лист Установите WS = WB.Worksheets (Wsheet) Затемнить данные как строку Dim ProcessData() как строка Дим А до тех пор Dim fnum как целое число fnum = свободный файл Если fnum > 0 Тогда Open FileName For Input As #fnum 'Открыть файл для добавления Данные = Ввод $ (LOF (1), 1) ProcessData() = Split(Data, vbLf) 'Обработать данные в массив, используя перевод строки для разделения строк Закрыть #фнум Конец, если Для А = 1 до 65000 WS. Cells(A, 1).Value = ProcessData(A - 1) Следующий Завершить функцию
—
Функция PopulateWSArray (ByRef tmpArray() As String, Wsheet As String, StartRow As Long, StartColumn As Long, EndRow As Long, EndColumn As Long) При ошибке Возобновить Далее «Обзор: мы можем использовать этот модуль для заполнения массива, который эмулирует рабочий лист. «Это позволило бы нам легко читать и обрабатывать данные. Dim WSArray() As Variant 'Массив для хранения данных Тусклая строка, столбец такой же длины Затемнить ББ как рабочую книгу Dim WS как рабочий лист Dim A, B As Long 'Счетчики, используемые для заполнения массива Установите WB = ThisWorkbook Установите WS = WB.Worksheets (Wsheet) Строка = EndRow - StartRow Столбец = EndColumn - StartColumn ReDim WSArray (строка, столбец) Для A = 1 в строке Для B = 1 в столбец WSArray(A, B) = WS.Cells(A, B) Следующий Следующий Завершить функцию
—
Функция DeleteRows (столбец как длинный, лист как строка) При ошибке Возобновить Далее Затемнить ББ как рабочую книгу Dim WS как рабочий лист Дим А до тех пор Dim tmpValue как вариант Установите WB = ThisWorkbook Установите WS = WB. Worksheets (Wsheet) Для А = от 1 до 1000 tmpValue = WS.Cells(A, Столбец).Value Если Len(Trim(tmpValue)) = 0 Then 'Ячейка не содержит никаких данных WS.Cells(A, Столбец).Активировать ActiveCell.EntireRow.Delete Если А > 1 Тогда A = A - 1 'Поскольку мы удаляем строку, нам нужно уменьшить счетчик Конец, если Конец, если Следующий Завершить функцию
—
Функция TrimAllCells (Wsheet As String) При ошибке Возобновить Далее 'Этот модуль можно использовать для удаления всех начальных и конечных пробелов из ячеек на рабочем листе. Dim A, B до тех пор, пока Dim tmpValue как вариант Затемнить ББ как рабочую книгу Dim WS как рабочий лист Установите WB = ThisWorkbook Установите WS = WB.Worksheets (Wsheet) For A = 1 To 10000 'Прокрутить 10000 строк For B = 1 To 256 'Прокрутка столбцов tmpValue = WS.Cells(A, B).Value WS.Cells(A, B).Value = Trim(tmpValue) Следующий Следующий Завершить функцию
—
Список функций () При ошибке Возобновить Далее 'Обзор: в этом модуле перечислены все рабочие листы в рабочей книге. Затемнить ББ как рабочую книгу Dim WS как рабочий лист Установите WB = ThisWorkbook Для каждого WS в WB.Worksheets Debug.Print WS.Name 'Эти команды записывают вывод в окно отладки (немедленно) Следующий Завершить функцию
—
Функция FindClearDuplicates (WKSheet как String, ColumnsToCheck() как Long, ClearDuplicates как Boolean, OutPutColumn как Long, необязательное значение MatchValue = 90) При ошибке Возобновить Далее 'Обзор: этот модуль используется для выявления повторяющихся записей и связывания повторяющейся записи с исходной записью. 'Модуль также может найти точный дубликат, или вы можете определить уровень точности, с которым вы хотите, чтобы сопоставление выполнялось. Затемнить ББ как рабочую книгу Dim WS как рабочий лист Размер A, B, C, D, E, X такой длины Тусклый счетчик до тех пор, пока Тусклая длина как длинная Тусклый продукт, максимальная длина Dim inPos, TrueLength As Long Установите WB = ThisWorkbook Dim tmpValue1, tmpValue2, tmpValue3, tmpValue4, tmpValueCombined, checkValue как вариант Установите WS = WB. Worksheets(WKSheet) Dim RowOutput As Long Dim tmpDupes() как вариант Для А = от 1 до 10000 Для B = 1 To UBound (ColumnsToCheck) tmpValueCombined = tmpValueCombined & Trim(WS.Cells(A, ColumnsToCheck(B))) Следующий Если Len(tmpValueCombined) > 0 Тогда ReDim Preserve tmpDupes(A) tmpDupes(A) = tmpValueCombined tmpValueCombined = "" Еще Выход для Конец, если Следующий Счетчик = 1 Для A = 1 To UBound(tmpDupes) Если IsEmpty(WS.Cells(A, OutPutColumn).Value), то tmpValue1 = tmpDupes(A) 'Проверить, было ли это уже Для B = (A + 1) для UBound (tmpDupes) tmpValue2 = tmpDupes(B) Если ClearDuplicates = True, то 'проверить наличие дубликатов Если tmpValue1 = tmpValue2 Тогда Если Len(WS.Cells(B, OutPutColumn).Value) > 0 Тогда Еще WS.Cells(B, OutPutColumn).Value = Счетчик Конец, если Конец, если Еще Если А = 13 Тогда Отладка. Печать "тест" Конец, если Длина = Len(tmpValue1) Для D = 1 по длине 'Определить истинную длину Истинная длина = длина - D + 1 Для E = 1 до TrueLength tmpValue3 = Середина (tmpValue1, D, E) inPos = InStr(tmpValue2, tmpValue3) Если inPos > 0 Тогда Продукт = Е Если Товар > Макс. Тогда Макс = Продукт Конец, если Конец, если Следующий Следующий Если Макс = Длина Тогда Если Len(WS.Cells(B, OutPutColumn).Value) > 0 Тогда Еще WS.Cells(B, OutPutColumn).Value = Счетчик Конец, если ElseIf Max >= Длина * MatchValue / 100 Тогда Если Len(WS.Cells(B, OutPutColumn).Value) > 0 Тогда Еще WS.Cells(B, OutPutColumn).Value = Counter & "*" & " " & (Max / Length * 100) & "%" Конец, если Конец, если Макс = 0 Конец, если Следующий WS.Cells(A, OutPutColumn).Value = Счетчик Счетчик = Счетчик + 1 Конец, если Следующий Завершить функцию
—
Функция ListAppVersion() При ошибке Возобновить Далее 'Обзор: этот модуль можно использовать для определения используемой версии Excel. Если Application.Version = "8.0", то "Excel 2003" Отладка. Печать 97 ElseIf Application.Version = "9.0" Then'Excel 2003 Отладка. Печать 2000 ElseIf Application.Version = "10.0" Then'Excel 2002 Отладка. Печать 2002 г. ElseIf Application.Version = "11.0" Then'Excel 2003 Отладка. Печать 2003 г. ElseIf Application.Version > "11.0" Then'Excel 2007 и выше Отладка.Печать 2007 Конец, если Завершить функцию
—
Функция HideShee t(Wsheet As String) При ошибке Возобновить Далее При ошибке Перейти к ErrHandler: 'Обзор: скрыть определенный рабочий лист, чтобы обычный пользователь не мог его отобразить Затемнить ББ как рабочую книгу Установите WB = ThisWorkbook WB.Worksheets(Wsheet).Visible = xlSheetVeryHidden Завершить функцию
—
Функция EvaluateNumber (данные в виде строки) As Long При ошибке Возобновить Далее 'Обзор: этот модуль получает значение и преобразует его в число. Если значение не может быть преобразовано 'модуль возвращает 0 Dim tmpValue как вариант tmpValue = CLng (данные) Если Пусто(tmpValue) Тогда tmpValue = 0 Конец, если ОценитьЧисло = tmpValue Завершить функцию
Подпрограмма и функция VBA | SuperExcelVBA
VBA имеет два типа процедур для создания и выполнения кодов: Subroutine (или просто Sub ) и Function .
До сих пор примеры в этом руководстве всегда были привязаны к Sub. С этого момента мы будем продолжать предполагать, что это Подпрограмма, если явно не указано, что это Функция.
Подпрограмма
Подпрограмма может использоваться для выполнения другой подпрограммы:
Подпрограмма sub_main() sub_auxiliary1 sub_auxiliary2 Конец сабвуфера Sub sub_auxiliary1 () MsgBox "Один саб выполняет другой саб" Конец сабвуфера Sub sub_auxiliary2 () MsgBox "Один саб выполняет второй саб" Конец сабвуфера
Для этого и других примеров просто запустите sub_main . Щелчком в любом месте между строкой Sub sub_main() и первой End Sub.
Подпрограмма также может принимать аргумент:
Подпрограмма sub_main() sub_argument(10) '10 — это аргумент Конец сабвуфера Sub sub_argument (x как целое число) Сообщение x Конец сабвуфера
Вы можете назначить аргумент Sub, используя один пробел:
sub_argument 10 '10 — это аргумент
Или несколько аргументов:
Sub sub_main() Тусклый счет как одиночный Тусклый студент как струна оценка=10 студент = "Пауло" Вызовите sub_argument (score, student) 'score — это аргумент, student — другой аргумент Конец сабвуфера Sub sub_argument (s_exam как Single, имя как String) Имя MsgBox & " оценка была " & s_exam Конец сабвуфера
Чтобы иметь более одного аргумента в Sub, вы можете использовать инструкцию Call перед именем Sub, который вы хотите вызвать.
Вы также можете выполнить Sub с несколькими аргументами, опуская инструкцию Call и круглые скобки:
балл под_аргумента, студент
Практикуйте объявление переменных в тех же типах данных, которые Sub требует в качестве аргументов.
Например,score и s_exam.
Сабвуферы также доступны из разных модулей:
Доступны следующие типы Sub: Private и Public :
- Public Sub: Создает общедоступную процедуру, к которой может получить доступ любая процедура любого модуля, и отображается в макросах (+).
- Private Sub: создает частную процедуру, к которой могут получить доступ только процедуры того же модуля, и отображается , а не в макросах (+).
VBA считает неопределенный Sub общедоступным.
Функции работают аналогично подпрограммам с аргументами. Основное отличие состоит в том, что Функция обязательно вернет значение и должна вызываться какой-то другой процедурой.
Sub sub_main() результат = умножить_2 (10) Результат сообщения Конец сабвуфера Функция умножить_2 (х как один) умножить_2 = х*2 Конечная функция
Невозможно передать аргументы функции через один пробел, если она связана с переменной.
результат = умножить_2 10 'Приведет к ошибке!
Учтите, что:
MsgBox resultado 'Это не приведет к ошибке, поскольку ассоциации нет.
Вы не можете запустить функцию отдельно. Необходимо вызвать другую процедуру.
напр. Sub sub_main().
После определения функции могут нормально использоваться пользователем в среде электронных таблиц Excel. Просто вызовите функцию по имени, как и любую другую предопределенную функцию (СУММ, СРЗНАЧ и т. д.).
Мы также можем определить в объявлении тип результата, который будет возвращать Функция:
Функцияmulti_2(x As Single) As Integer умножить_2 = х*2 Конечная функцияОбратите внимание, что теперь функция будет возвращать только округленные результаты, учитывая спецификацию возврата As Integer.
В VBA есть много предопределенных функций. MsgBox — один из них.
Msgbox "Это должно быть показано" 'MsgBox работает без круглых скобок Msgbox ("Это должно быть показано") 'и работает со скобками
Присвоение имени функции
Когда вы создаете функцию, за ней должно следовать имя, которое должно соответствовать следующим правилам:
- Оно должно начинаться с буквенного символа
- Он должен содержать , а не специальные символы, такие как: #, $, %, &, !
- Он должен содержать пробелы, точки или запятые , а не
- Это должно быть , а не зарезервированное слово VBA, например: And, Or, Sub
Ошибки функции
Вопрос: Что, если пользователь вставит в мою функцию неожиданные значения?
Ответ: Создайте ошибку, чтобы предупредить его.
Эту процедуру можно выполнить с помощью предопределенной функции CVErr, которая использует целочисленное значение для указания ошибки.
Возможные значения, которые он принимает:
- 2000 (или xlErrNull), что возвращает #NULL! ошибка
- 2007 (ou xlErrDiv0), который возвращает ошибку #DIV/0
- 2015 (ou xlErrValue), который возвращает #VALUE! ошибка
- 2023 (или xlErrRef), который возвращает #REF! ошибка
- 2029 (ou xlErrName), который возвращает #NAME? ошибка
- 2036 (или xlErrNum), который возвращает #NUM! ошибка
- 2042 (ou xlErrNA), который возвращает ошибку #N/A
Сравните, как определяемая пользователем функция (UDF) для вычисления площади треугольника должна быть изменена, чтобы применить CVErr
Функция AreaTriangle (основание как одинарное, высота как одинарное) как двойное 'Поскольку Double выше указывает возвращаемый тип AreaTriangle Площадь треугольника = (основание * высота) / 2 Конечная функция
Отрицательные значения для расчета площади не ожидаются, поэтому давайте создадим ошибку, если пользователь их введет:
Функция AreaTriangle(Основание как одиночное, Высота как одиночное) Как вариант 'As Variant определяет тип данных AreaTriangle Если Основание < 0 Или Высота < 0 Тогда ПлощадьТреугольник = CVERr(2036) Еще Площадь треугольника = (основание * высота) / 2 Конец, если Конечная функция
Таким образом, если пользователь вставит отрицательные значения, в ячейке функции появится следующая ошибка:
Тип данных CVERr(2036) — ошибка. Этот тип данных мало того, что не распространен, так еще и несовместим с числовыми данными (которые понадобятся для расчета площади). Поэтому мы присваиваем AreaTriangle тип данных Variant. Таким образом, AreaTriangle будет принимать как тип данных Error, если это произойдет, так и тип данных Double, который будет возвращен, если вычисление прошло правильно.
Подпрограмма VS
- Подпрограммы не возвращают значения при вызове. Функции возвращают значения
- Подпрограммы можно назначать кнопкам и фигурам в Excel, функции нельзя
- Функции, созданные в VBA, можно использовать на листе Excel
По умолчанию имена предопределенных функций Excel пишутся заглавными буквами.
Сочетание прописных и строчных букв — хороший способ отличить Excel и сделать явными функции, созданные пользователем.
Консолидация вашего обучения
Предлагаемые упражнения
Функция факториала суммы степеней Бесконечный ряд Рекурсивный факториал
- Предыдущая страница
- Следущая страница
- сообщить об ошибке/отзыв
SuperExcelVBA.