在 Excel 中使用 VBA 检查一天是否在两个给定的日子之间

问题描述

我在 Excel 中使用 VBA 编码的知识有限,并且遇到了问题。我正在尝试编写一个代码,根据一周中的哪一天执行某些操作。

我将星期几提取为字符串,然后使用 IF...ELSE 位。下面附上代码

Sub Schedule()

    Dim Today As String

    Today = Format(Date,"dddd")

    If Today >= "Monday" And Today <= "Thursday" Then
 
    'code to do something

    ElseIf Today = "Friday" Then

    'code to do something

    ElseIf Today >= "Saturday" And Today <= "Sunday" Then

    'code to do something

    End If

End Sub

请多多指教。

解决方法

使用 WeekDay() 提取一个代表当前星期几的整数:

Dim Today As VbDayOfWeek

Today = Weekday(Date)

If Today >= vbMonday And Today <= vbThursday Then
    ....
,

您不能将比较操作数(><)应用于字符串,因此您需要使用 .WeekDay() 函数而不是格式化为字符串。

文档如下:WeekDay 请注意第二个可选参数。

代码如下:

Dim Today as Long

Today = WeekDay(Date)

If Today >= 2 And Today <= 5 Then
    'do something
ElseIf Today = 6 Then
    'do something
ElseIf Today = 7 Or Today = 1 Then
    'do something
End If
,

Select Case ... 对此很好 - 并且确实使用常量,而不是幻数:

Sub Schedule()

    Select Case Weekday(Date)
        Case vbMonday To vbThursday
            ' Code to do something.
        Case vbFriday
            ' Code to do something else.
        Case vbSaturday,vbSunday
            ' Code to do some fun.
    End Select

End Sub