我有一张包含上课时间(学校)每日时间表的表格,并且希望每 20 秒有条件地格式化成对的列。例如,第一个小时从上午 8:10(单元格 B3)开始,到上午 8:55(C3)结束。第二个小时从上午 8:58 (D3) 开始,一直持续到 9:40 (E3),依此类推。使用条件格式,我想以黄色突出显示范围 B2:C3,而实际的 NOW 时间在时间跨度 (B3 ,C3)。一旦时间超出C3不超过20秒,我想更改条件格式。
问题是,如果我不单击另一张工作表,然后返回“计划表”,工作表中的条件格式就不会更新。一旦我这样做,条件格式就起作用了。我花了几个小时研究这个问题,但无法弄清楚。任何帮助将非常感激。非常感谢。
设置: 在 VBA 属性中,EnableFormatConditionsCalculation 为 true。 在“公式”>“计算选项”中,设置“自动”。
B2:C2 的条件格式示例(这些已合并): =IF(OR(AND(J1="N",时间(小时(NOW())),分钟(NOW()),第二(NOW())) >= B3, 时间(小时(NOW()),分钟(NOW()),第二(NOW())) = B4, 时间(小时(NOW()),分钟(NOW()),第二(NOW())) < C3),AND(J1="Y",TIME(HOUR(NOW()),MINUTE(NOW()),SECOND(NOW())) >= B5、时间(小时(NOW())、分钟(NOW())、秒(NOW())) < C4),AND(L1="Y",TIME(HOUR(NOW()),MINUTE(NOW()),SECOND(NOW())) > < C5)), TRUE, FALSE)
B3 的条件格式示例: =AND(J1="N",时间(小时(NOW()),分钟(NOW()),秒(NOW())) >= B3, 时间(小时(NOW()),分钟(NOW() ),第二(现在())) < C3)
C3 的条件格式示例: =AND(J1="N",时间(小时(NOW()),分钟(NOW()),秒(NOW())) >= B3, 时间(小时(NOW()),分钟(NOW() ),第二(现在())) < C3)
背景: 此表中基本上有 3 个不同的时间表,由 定义
sheet12后面名为“Schedule”的代码:
Private Sub Worksheet_Activate()
RecalculateWorkingHours
With Application
.EnableEvents = True
.OnTime earliesttime:=Now + TimeValue("00:00:20"), procedure:="Refresh_Schedule", Schedule:=True
End With
End Sub
本工作簿背后的代码:
Public Sub Workbook_Open()
RecalculateWorkingHours
End Sub
模块2中的代码:
Public Sub RecalculateWorkingHours()
Dim T1 As Date
Dim T2 As Date
Dim x As Variant
T0 = Now
T1 = TimeValue("8:00 AM")
T2 = TimeValue("3:31 PM")
If T0 >= T1 And T0 <= T2 Then
Calculate
Application.OnTime earliesttime:=Now + TimeValue("00:00:20"), procedure:="RecalculateWorkingHours" ', schedule:=False
Else
End If
End Sub
Public Sub Refresh_Schedule()
Calculate
End Sub
Time()
函数
T0 = Time()