我正在制作DTR,并且在此DTR的Form_Load上,我希望它检查当前日期。当它到达当月的13日,14日,15日,26日,27日,28日,29日或30日时,我希望它能够弹出一个msgbox,提醒其员工的工资。但是,当我运行我的代码时,即使它与我希望它到msgbox的那天不匹配,它仍然是消息框。例如,如果当前日期是该月的第3天,它仍会弹出一个msgbox。这是我的代码。我没有使用计时器。
Dim strDate As Integer
If strDate = Format(Now, "d") = 13 Or 14 Or 15 Or 27 Or 28 Or 29 Or 30 Then
'DatePart("d", Now)
If MsgBox("Alert Edwin Jay Sandoval or Maria Consuelo regarding your salary!", vbCritical + vbOKOnly, "Salary") = vbOK Then
MsgBox "Alert Edwin Jay Sandoval or Maria Consuelo regarding your salary!", vbCritical + vbOKOnly, "Salary"
End If
End If
答案 0 :(得分:1)
您不应使用Format
函数来获取日期组件。 Format
用于返回指定日期的格式化字符串。 VB通过将字符串转换为整数来进行比较,从而帮助您。使用VB的Day()
,Month()
或Year()
函数来提取日期组件。
Dim intDay As Integer
intDay = Day(Date)
Select Case intDay
Case 13 To 15, 26 To 30
' Match
Case Else
' No Match
End Select
答案 1 :(得分:0)
您目前正在将当天比较为13,而其他字词则在OR
声明中。
您需要执行以下操作:
If (Format(Now, "d") = 13) Or (Format(Now, "d") = 14) _
Or (Format(Now, "d") = 15) Or (Format(Now, "d") = 27) _
Or (Format(Now, "d") = 28) Or (Format(Now, "d") = 29) _
Or (Format(Now, "d") = 30) Then
...
您应该首先将日期编号拉出变量。