簡體   English   中英

如何根據每個單元格的值和固定單元格的值有條件地格式化VBA中的列?

[英]How do I conditionally format a column in VBA based on each cell's value and a fixed cell's value?

我需要為一列設置條件格式,其中基於從電子表格中的單元格派生的其他兩個值來突出顯示每個單元格。 值是日期。 這需要在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM