簡體   English   中英

Excel條件格式宏

[英]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.

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