[英]Excel Conditional Formatting macro
我正在嘗試在excel中編寫一個宏來做一些我需要在excel中完成的平凡任務。 我需要一個宏,它將根據值范圍內的日期有條件地格式化值范圍。 它需要是動態的,因為每次運行時范圍都會改變大小。 我附上了最終表格應該是什么樣的圖片,並附上了為什么格式化這種方式的原因。
我對VBA很新,所以我似乎無法弄清楚如何做到這一點,但在我能夠學習VBA之前需要宏才能編寫這個代碼。 有人會介紹我如何做到這一點的一個例子嗎? 謝謝。
這應該讓你走上正軌!
Sub Main()
'---Variables---
Dim myRange As Range
'---Customize---
Set myRange = ThisWorkbook.Sheets(1).Range("A:D") 'The range to be formatted
'---Logic---
myRange.FormatConditions.Delete 'Clear
'Rules that are up in the list have higher priority
Call FormatRange(myRange, 3, "=AND($D1<TODAY()-2;NOT(ISBLANK($D1)))")
Call FormatRange(myRange, 29, "=AND($D1<TODAY()-1;NOT(ISBLANK($D1)))")
Call FormatRange(myRange, 45, "=AND($D1<TODAY();NOT(ISBLANK($D1)))")
Call FormatRange(myRange, 10, "=$D1=TODAY()")
'Note that you may have to use , instead of ; depending on your localization!
'You can find ColorIndexes from http://dmcritchie.mvps.org/excel/colors.htm
End Sub
'A support method that makes creating new conditional formats a little easier
Public Sub FormatRange(r As Range, colorIndex As Integer, formula As String)
r.FormatConditions.Add xlExpression, Formula1:=formula
r.FormatConditions(r.FormatConditions.Count).Interior.colorIndex = colorIndex
End Sub
將代碼復制到Visual Basic編輯器中的新代碼模塊(ALT + F11)。 請注意,您可能需要更改“;” 到“,”取決於您的本地化! 您可以將范圍切換為您需要格式化的范圍,並修改示例公式以滿足您的需要或創建新的公式。
您可以在此處找到ColorIndexes以及有關在此處制作實際公式的信息 。
HTH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.