Функция на Excel VBA за делничен ден
Делничният ден във VBA е функция за дата и час, която се използва за идентифициране на делничния ден на дадена дата, при условие че е входяща, тази функция връща целочислена стойност от 1 до 7 диапазон, към тази функция е предоставен незадължителен аргумент, който е първи ден от седмицата, но ако не предоставим първия ден от седмицата, тогава функцията приема неделята за първи ден от седмицата по подразбиране.
Можем ли да разберем номера на делничния ден, като погледнем определена дата? Да, можем да определим номера на деня през тази седмица, в зависимост от началния ден от седмицата. В обикновените функции на работния лист имаме функция, наречена WEEKDAY в Excel, за да определим номера на седмицата за определена дата. И във VBA имаме една и съща функция за намиране на едно и също нещо.

Какво прави функцията за делничен ден?
Функцията за делничния ден връща номера на деня на дадената дата в седмицата. Например, ако имате датите 01 -ви април до 07 -ти април, а ако искате да знаете деня на датата 05 -ти за април началния ден на седмицата е от понеделник, че е на 5 -ти ден.
За да намерим това, имаме същата функция като „Делничен ден“ в работен лист, както и във VBA. По-долу е синтаксисът на функцията.

Дата: За коя дата се опитваме да намерим делничния ден. Това трябва да е подходяща дата с правилния формат.
(Първи ден от седмицата): За да определим делничния ден на предоставената дата, трябва да споменем кой е първият ден от седмицата. По подразбиране VBA счита „понеделник“ за начален ден от седмицата. Освен това можем да предоставим и следващите дни.

Примери
Пример # 1
За да започнем производството, нека първо започна с прост пример. Сега ще се опитаме да намерим делничния ден за датата „10-април-2019“.
Стъпка 1: Дефинирайте променливата като String
Код:
Sub Weekday_Example1 () Dim k As String End Sub

Стъпка 2: Присвояване на стойност на променливата
Задайте стойността на променливата „k“, като приложите функцията WEEKDAY.
Код:
Sub Weekday_Example1 () Dim k As String k = Weekday (End Sub

Стъпка 3: Въведете дата във функция
Датата, която тестваме тук, е „10 април 2019 г.“, така че предавайте датата като „10 април 2019 г.“.
Код:
Sub Weekday_Example1 () Dim k As String k = Weekday ("10-Apr-2019" End Sub

Стъпка 4: Показване на стойността на променливата в MsgBox
По подразбиране той приема първия ден от седмицата като „понеделник“, така че игнорирайте тази част. Затворете скобата. Следващият ред показва стойността на променлива „k“ в полето за съобщения на VBA.
Код:
Sub Weekday_Example1 () Dim k As String k = Weekday ("10-Apr-2019") MsgBox k End Sub

Добре, приключихме
Ако стартираме кода, ще получим резултата като „4“, тъй като от неделя посочената дата (10-април 2019 г.) се пада на 4 -ия ден от седмицата.
Забележка: Началният ден на седмицата на моята система е „неделя“.
По същия начин, ако промените началния ден от седмицата, той продължава да варира. По-долу е примерен ред за същото.
Код:
k = делничен ден ("10 април 2019 г., vbMonday) 'Това връща 3 k = делничен ден (" 10 април 2019 г., vbTuesday)' Това връща 2 k = делничен ден ("10 април 2019 г., vbWednesday) 'Това връща 1 k = делничен ден ("10-април-2019", vbThursday)' Това връща 7 k = делничен ден ("10-април-2019", vbFriday) 'Това връща 6 k = делничен ден ("10-април-2019 ", vbSaturday) 'Това връща 5 k = Делничен ден (" 10-април 2019 ", vbSunday)' Това връща 4
Пример # 2 - Пристигане дали датата е в уикенд или не
Да приемем, че имате дата като по-долу и искате да намерите датата на следващия уикенд, тогава можем да използваме функцията WEEKDAY, за да стигнем до резултатите.

Трябва да използваме WEEKDAY с условие IF и цикли, за да стигнем до резултата. Написах кода, за да преминете ред по ред, за да получите логиката.
Код:
Sub Weekend_Dates () Dim k As Integer For k = 2 To 9 If Weekday (Клетки (k, 1). Стойност, vbMonday) = 1 Тогава клетки (k, 2). Стойност = Клетки (k, 1) + 5 ElseIf Делничен ден (Клетки (k, 1). Стойност, vbMonday) = 2 Тогава клетки (k, 2). Стойност = клетки (k, 1) + 4 ElseIf делничен ден (клетки (k, 1). Стойност, vbMonday) = 3 След това клетки (k, 2). Стойност = Клетки (k, 1) + 3 ElseIf Делничен ден (Клетки (k, 1). Стойност, vbMonday) = 4 Тогава клетки (k, 2). Стойност = Клетки (k, 1) + 2 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 5 Тогава Cells (k, 2) .Value = Cells (k, 1) + 1 Else Cells (k, 2) .Value = "Това всъщност е уикендът Date "End If Next k End Sub

Това ще доведе до резултатите по-долу.

Погледнете клетките B6 и B7. Получихме резултата като „Това всъщност е датата на уикенда“, тъй като датите „04-май-2019“ и „06-април-2019“ всъщност са дати през уикенда, така че няма нужда да се показва датата на уикенда за датите на уикенда. По подразбиране получаваме резултата като този.