每个循环问题的VBA Excel

我有下面的代码,应该循环通过一个rest时间列和一列员工时间。 如果员工时间在8点28分到8点58分之间,那么如果rest时间超过了61分钟,则应该切换颜色。 同样,如果员工时间超过8:58,如果rest时间超过91分钟,则应该切换颜色。 目前,这两种情况都没有发生,因为代码中显然缺less一些东西。

Dim ttlBr As Range, stfTm As Range Dim StfTm900 As Double, StfTm830 As Double, ttlBrTm900 As Double, ttlBrTm830 As Double StfTm900 = TimeValue("08:58:00") StfTm830 = TimeValue("08:28:00") ttlBrTm900 = TimeValue("01:31:00") ttlBrTm830 = TimeValue("01:01:00") For Each ttlBr In Range("T2:T7") For Each stfTm In Range("H2:H7") If stfTm > StfTm830 And stfTm < StfTm900 Then If ttlBr > ttlBrTm830 Then Selection.FormatConditions(1).Interior.Color = 5263615 End If ElseIf stfTm > StfTm900 Then If ttlBr > ttlBrTm900 Then Selection.FormatConditions(1).Interior.Color = 5263615 End If End If Next stfTm Next ttlBr 

我错过了什么?

在这里输入图像说明

编辑:添加图片清晰

我认为最重要的错误是你正在做两个嵌套循环 ,这意味着你正在检查T2:T7所有单元与H2:H7所有单元。 你真正需要的是比较同一行上的单元格,对吗? 你也检查后设置FormatConditions(1).Interior.Color ,这是没有意义的。 要么设置一些FormatConditions或使用Range.Interior.Color ,但不要混合它们。

“下标超出范围”错误很可能是由于FormatConditions(1)不存在。

尝试使用格式条件而不是循环:

  With Sheet1.Range("T2:T7").FormatConditions .Delete .Add(xlExpression, , _ "=AND(T2>" & ttlBrTm830 & ", H2 <" & StfTm900 & ",H2 >" & StfTm830 & ")").Interior.Color = 5263615 End With 

该线

 ttlBr.FormatConditions(1).Interior.Color = 5263615 

只有在单元格已经有格式条件的情况下才会起作用,否则会抛出所描述的错误