如何根据每个单元格的值和固定单元格的值有条件地格式化VBA中的列?

我需要为其中每个单元格突出显示的列设置条件格式,其中还有两个从电子表格中的单元格派生的值。 值是date。 这需要在VBA中完成(原因很多:代码与其他软件一起工作,清除内容,组合行等等)。 我已经失败了许多方法,目前正在失败,如下:

Sheets("Trial").Activate With ActiveSheet.Range("E:E") .Select .FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, Formula1:="=" & (Range("P1").Value - 1), Formula2:="=" & (Range("P1").Value + 6) .FormatConditions(1).Interior.Color = RGB(255, 0, 0) End With 

最终,当数值在P1-1和P1 + 6之间时,我需要列E中的单元格变为红色。 即使我提取这个代码并自行运行它,我得到一个过程调用错误。 思考?

请尝试:

 Sheets("Trial").Activate With Columns("E:E") .FormatConditions.Add Type:=xlExpression, Formula1:="=AND(E1>=$P$1-1,E1<=$P$1+6)" .FormatConditions(1).Interior.Color = 255 End With 

如果你不想要的话,你甚至不需要使用条件格式。 您可以使用for循环遍历E列中的所有值。以此为例。

 Dim TotalERows As Long Dim EValue As Long Dim LowerBound As Long Dim UpperBound As Long LowerBound = Worksheets("Sheet1").Range("P1").Value - 2 UpperBound = Worksheets("Sheet1").Range("P1").Value + 7 TotalERows = Worksheets("Sheet1").Range("E" & Rows.Count).End(xlUp).Row For I = 1 To TotalERows EValue = Range("E" & I).Value If LowerBound < EValue And EValue < UpperBound Then Range("E" & I).Interior.ColorIndex = 3 End If Next I