问题描述
我在 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