VBA工作日| VBA中的工作日功能分步指南

Excel VBA工作日功能

在VBA中的工作日 是日期和时间函数,用于标识给定日期的星期几(如果将其作为输入),此函数返回1到7范围内的整数值,此函数提供的可选参数是日期的第一天星期,但如果我们不提供星期的第一天,则默认情况下该函数将星期日作为星期的第一天。

我们可以通过查看特定日期来告诉工作日数字吗?是的,我们可以根据一周中的开始日期来告知该周的天数。在常规的工作表函数中,我们在excel中有一个称为WEEKDAY的函数来告诉特定日期的星期数。在VBA中,我们也具有相同的功能来找到相同的东西。

工作日功能有什么作用?

Weekday函数返回提供的日期的星期几。例如,如果您具有4月01日至4月7日的日期,并且如果您想知道4月5日的日期(如果一周的开始日期是星期一),则该日期为第5天。

为了找到这个,我们在工作表和VBA中都具有相同的“工作日”功能。下面是该函数的语法。

日期: 我们正在尝试寻找哪个日期的工作日。这应该是一个正确的日期,格式正确。

[一周的第一天]: 为了确定所提供的工作日 日期 我们需要提到星期几。默认情况下,VBA会将“星期一”视为一周的开始日期。除此之外,我们还可以提供以下日子。

例子

您可以在此处下载此VBA WeekDay函数Excel模板– VBA WeekDay函数Excel模板

范例#1

首先,让我从一个简单的例子开始。现在我们将尝试查找日期为“ 2019年4月10日”的工作日。

步骤1:将变量定义为String

代码:

 Sub Weekday_Example1()Dim k作为字符串结尾Sub 

步骤2:为变量赋值

通过应用WEEKDAY函数将值分配给变量“ k”。

代码:

 Sub Weekday_Example1()Dim k作为字符串k = Weekday(End Sub 

步骤3:在功能中输入日期

我们在这里测试的日期是“ 2019年4月10日”,因此将日期传递为“ 2019年4月10日”。

代码:

 Sub Weekday_Example1()Dim k作为字符串k = Weekday(“ 10-Apr-2019” End Sub 

步骤4:在MsgBox中显示变量的值

默认情况下,它将星期的第一天作为“星期一”,因此请忽略此部分。合上支架。在下一行中,在VBA消息框中显示变量“ k”的值。

代码:

 Sub Weekday_Example1()Dim k作为字符串k = Weekday(“ 10-Apr-2019”)MsgBox k End Sub 

好的,我们完成了。

如果运行代码,则结果将为“ 4”,因为从星期日开始,提供的日期(2019年4月10日)位于一周的第4天。

笔记: 我系统的每周开始日期是“星期日”。

同样,如果您更改一周的开始日期,它也会不断变化。下面是相同的示例行。

代码:

k = Weekday(“ 10-Apr-2019”,vbMonday)'这将返回3 k = Weekday(“ 10-Apr-2019”,vbTuesday)'这将返回2 k = Weekday(“ 10-Apr-2019”,vbWednesday) '这将返回1 k = Weekday(“ 2019年4月10日”,vbThursday)'这将返回7 k = Weekday(“ 10-Apr-2019”,vbFriday)'这将返回6 k = Weekday(“ 2019年4月10日” “,vbSaturday)'这将返回5 k = Weekday(” 10-Apr-2019“,vbSunday)'这将返回4 

示例2 –到达日期是否为周末

假设您有一个如下所示的日期,并且您想查找下一个周末的日期,那么我们可以使用WEEKDAY函数得出结果。

我们需要将WEEKDAY与IF条件一起使用并循环以得出结果。我已经为您编写了代码,以逐步了解逻辑。

代码:

 Sub Weekend_Dates()将k的整数k设为k = 2到9如果Weekday(Cells(k,1).Value,vbMonday)= 1然后Cells(k,2).Value = Cells(k,1)+ 5 ElseIf Weekday (Cells(k,1).Value,vbMonday)= 2然后Cells(k,2).Value = Cells(k,1)+ 4 ElseIf Weekday(Cells(k,1).Value,vbMonday)= 3 then Cells (k,2).Value =单元格(k,1)+ 3 ElseIf Weekday(Cells(k,1).Value,vbMonday)= 4然后Cells(k,2).Value =单元格(k,1)+ 2 ElseIf Weekday(Cells(k,1).Value,vbMonday)= 5然后Cells(k,2).Value =单元格(k,1)+ 1 Else Cells(k,2).Value =“这实际上是周末日期”结束,如果下一个k结束子 

这将得出以下结果。

查看单元格B6和B7,我们得到的结果为“这实际上是周末日期”,因为日期“ 04-May-2019”和“ 06-Apr-2019”实际上是周末日期,因此无需显示周末日期周末约会。默认情况下,我们得到的结果是这样的。