VBA基于动态条件的条件格式

时间:2016-10-25 23:15:41

标签: excel vba excel-vba

我有一张表,我原本打算手动输入此公式并适应单元格:= AND(日期(例如,AE22)> = StartDate(例如G25),日期(与之前相同)&lt ; = EndDate(例如,I25))这是进入Cell AE25的公式。 对于该行中当天(例如,26日至10月)的所有细胞将具有完全相同的公式。然后在第二天(27日至10月),我将不得不更改日期(从AE22到AI22),以便公式正确。 最后,我将条件格式设置为突出显示它,如果它是True,而不是如果它是False。 我想知道我是否能够通过VBA完成所有操作,以便在工作表上有任何更改时自动更新。我确信它可以完成,但我能找到任何可以帮助我的东西。 工作表的目的是在gantlet图表视图中创建动态生产计划。

工作表的屏幕截图

Screen shot of the worksheet

如果您需要更多信息,请与我们联系。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

这非常粗糙,但希望它能给你这个想法。此示例将单元格着色为黄色:

Sub FormatGantt()

  Dim r As Range
  Dim fromDate, toDate, colDate As Date
  Dim row, col As Integer

  For row = 25 To 29
    fromDate = Cells(row, 7).Value2
    toDate = Cells(row, 9).Value2

    For col = 31 To 50 Step 4
      colDate = Cells(22, col).Value2
      If colDate >= fromDate And colDate <= toDate Then
        Range(Cells(row, col), Cells(row, col + 3)).Interior.Color = 65535

      End If
    Next col

  Next row


End Sub

以下是此屏幕截图:

enter image description here

这是针对非常狭窄的范围。要完成您要执行的操作,当进行任何更改时,您需要触发Worksheet_Change事件(https://msdn.microsoft.com/en-us/library/office/ff839775.aspx),检测我们更改的单元格并相应地应用下面的格式。