我正在努力通過 VBA 編碼大提琴格式,我正在努力通過條件格式來完成所需的作業。
首先,我需要將日期在當前日期的 1 個月內的任何單元格填充為橙色。其次,任何日期在當前日期之前的單元格都被填充為紅色。我能夠通過條件格式輕松實作這一點。
下一步是我認為 VBA 可能更容易的地方。如果在與日期單元格相鄰的單元格中出現復選標記,則日期單元格(和復選標記單元格)將被填充為綠色。我無法獲得這種特定的東西來處理條件格式。
我試圖實作的示例顯示在附圖中。
我正在處理的宏如下,但邏輯只是用我理解的橙色填充任何空的復選標記單元格。我也在努力理解比較日期所需的語言。
Sub green()
For Each Cell In Worksheets("Base Data").Range("F3:P10000")
If Cell.Value = ChrW(&H2713) Then
Cell.Offset(0, -1).Interior.Color = RGB(146, 208, 80)
ElseIf Cell.Value < (Date 30) Then
Cell.Interior.Color = RGB(255, 192, 80)
ElseIf Cell.Value < Date Then
Cell.Interior.Color = RGB(255, 0, 0)
Else
End If
Next
End Sub
然后,我還需要能夠使用頂部的按鈕過濾包含橙色或紅色單元格的任何行。
任何幫助將非常感激。
謝謝。

uj5u.com熱心網友回復:
下面是你的代碼的重寫。
我有;
- 使用“Y”而不是勾號,因為這樣更容易創建示例。
- 為便于閱讀,顏色使用了 vb 常量,您的 RGB 值很好用。
- 重新排序
If條件 - 見下文。 - 添加了額外的條件檢查,以避免填充空白單元格或提前 30 天的日期。
您的代碼的最大問題是< today 30在評估值是否只是< Today. 如果單元格中的日期滿足條件< Today 30**,則它也滿足條件< today**。因為您< Today在< Today 30將紅色著色的代碼從未執行之后進行檢查,所以它滿足< Today 30條件并且已經將單元格著色為橙色。
Sub Olly()
Dim TodaysDate As Date
Dim TargetCell As Range
TodaysDate = Date
For Each TargetCell In Me.Range("B2:G5")
If TargetCell.Value = "Y" Then
TargetCell.Offset(0, -1).Interior.Color = vbGreen
ElseIf Not TargetCell.Value = "" Or TargetCell.Value >= (TodaysDate 30) Then
If TargetCell.Value <= (TodaysDate) Then
TargetCell.Interior.Color = vbRed
ElseIf TargetCell.Value <= (TodaysDate 30) Then
TargetCell.Interior.Color = vbYellow
End If
End If
Next TargetCell
End Sub
例子;

請注意:我沒有添加任何條件格式來突出顯示Due 30和Overdue 的最后兩列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/370743.html
上一篇:如何更快更小地回圈單元格范圍
