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: 5Line 2: 4Line 3: 4Line 4: 3Line 5: 4Line 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.