1

我试图在 Excel VBA 中突出显示到期日期。我需要 B 列突出显示将在下个月内到期的日期,并需要 c 列突出显示将在 4 - 6 个月内到期的日期。目前,如果我删除列并一次在一列上运行代码,则代码有效,例如

Name            Green Will Expire within 1 Month    
Name 1          01/01/2013    
Name 2          17/07/2013    
Name 3          03/04/2013    
Name 4          24/03/2013    
Name 5          16/07/2013    
Name 6          26/01/2013    
Name 7          28/06/2013    
Name 8          01/07/2013    
Name 9          09/01/2013    
Name 10         31/07/2013

名称(A 列),绿色将在 1 个月内到期(B 列)。

如果我仅使用这两列运行代码(已删除 C 列),则代码可以正常工作。如果我包括我的第三列,Orange Expires in 4 - 6 Months(C 列):

   Name     Green Will Expire within 1 Month    Orange Expires in 4 - 6 Months
Name 1          01/01/2013                          01/01/2013
Name 2          17/07/2013                          01/12/2013
Name 3          03/04/2013                          03/04/2013
Name 4          24/03/2013                          20/11/2013
Name 5          16/07/2013                          16/07/2013
Name 6          26/01/2013                          26/01/2013
Name 7          28/06/2013                          28/06/2013
Name 8          01/07/2013                          01/07/2013
Name 9          09/01/2013                          09/01/2013
Name 10         31/07/2013                          31/07/2013

只有第二个 for 循环有效。我需要这两个 for 循环来运行而不必删除任何列。

VBA代码:

Private Sub CommandButton1_Click()

Dim Cell As Range

    For Each Cell In Range("B2:B1000").Cells
        If Cell.Value <= Date + 30 And Not (Cell.Value < Date) And IsEmpty(Cell.Offset(0, 1).Value) Then
        Cell.Interior.ColorIndex = 35
        End If
    Next Cell

    For Each Cell In Range("C2:C1000").Cells
         If Cell.Value <= Date + 180 And Not (Cell.Value <= Date + 120) And IsEmpty(Cell.Offset(0, 1).Value) Then
         Cell.Interior.ColorIndex = 45
         End If
    Next Cell

End Sub

任何帮助是极大的赞赏。

谢谢你

4

1 回答 1

2

如果 C 列不为空,则条件语句的部分将始终评估为:False

And IsEmpty(Cell.Offset(0, 1).Value)

在相关说明中,相同的片段位于第二个循环中,因此您可能也想从那里删除它。但我不确定那部分是否需要逻辑。在任何情况下,同样适用:如果列 D为空,则 this 将始终评估为 false,因此If...Then将省略 the 的主体。

于 2013-06-17T14:12:02.630 回答