每 20 秒刷新一次工作表中的条件格式

问题描述 投票:0回答:1

我有一张包含上课时间(学校)每日时间表的表格,并且希望每 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 个不同的时间表,由 定义

    H1(周一、周二、周四、周五;这是默认值,为“Y”)
  • H1 的公式为 =IF(J1="N","Y","N")
  • J1(周三日程不同)
  • J1 的公式为 =IF(WEEKDAY(TODAY())=4,"Y","N")
  • L1(“Y”或“N”,用于晚雪天)
  • L1 的值为“N”或“Y”

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
    
excel vba time refresh cell
1个回答
1
投票
您的代码永远不会运行,因为两个比较之一总是错误的。它还包括日期。像这样使用

Time()

 函数

T0 = Time()
    
© www.soinside.com 2019 - 2024. All rights reserved.