請問各位師兄師姐可以幫下我?
我做了以下VBA Code,但不明白為何不起作用。
需求如下:
我的VBA Code如下:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Range("C3") >= 4 Then
Exit Sub
Else
msg = MsgBox("Application takes at least 4-7 working days", vbOKOnly, "Reminder")
Range("A3").Select
Selection.ClearContents
msg = MsgBox("Please choose another date", vbOKOnly)
End If
Application.EnableEvents = True
End Sub
您好,可以尝试以下VBA代码:
vb
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$J$4" Then
Dim date1 As Date, date2 As Date
date1 = Range("A4").Value
date2 = Range("J4").Value
If NetworkDays(date2, date1) <= 4 Then
MsgBox "Application takes at least 4-7 working days"
MsgBox "Please pick another date"
Range("J4").ClearContents
End If
End If
End Sub
逻辑说明:
1. 在Worksheet的Change事件中,监听J4单元格的变化
2. 获取A4和J4的日期,计算差值的工作日天数
3. 如果工作日天数<=4天,则弹出提示框,并清空J4的值
4. 当J4的值改变时,会再次触发事件,重新验证逻辑
这种方式可以达到您的要求,每次改变J4的值时验证天数是否符合要求。
需要注意Change事件会触发频繁,如果日历计算比较耗时,可以只在J4值改变时触发计算。
请根据实际情况调整逻辑。