【发布时间】:2015-12-08 17:51:06
【问题描述】:
基本上,我正在尝试制作适用于我工作簿中所有工作表的条件格式,因为我不知道有什么方法可以做到这一点,我想我会制作一个 VBA 脚本来为每个工作表创建它。它可以工作,但是如果它们已经具有格式,则会创建重复项,有什么办法可以防止这种情况发生吗?请参阅下图有多个相同条件格式的副本,因为我多次运行 VBA 脚本,我想检查是否存在具有特定公式的条件格式以防止这种情况,但没有找到如何做到这一点的运气。
Sub Macro1()
Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets
If ws.Name = "macrotest" Then
ws.Activate
Dim myRange As Range
Set myRange = Range("A1:GJH5000")
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=AND(Sheet2!$A$1=TRUE, OR(CELL(""col"") - 5 > CELL(""col"",A1), CELL(""col"") + 1
<CELL(""col"",A1), CELL(""row"") - 1 > CELL(""row"",A1), CELL(""row"") + 3
<CELL(""row"",A1)))"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
With Selection.FormatConditions(1).ModifyAppliesToRange(myRange)
End With
End If
Next ws
End Sub
我可以使用 formatconditions.delete 删除任何现有的条件格式,但我不想删除其他条件格式。有什么想法吗?
【问题讨论】:
-
只是脚本上的一个问题。为什么在使用工作表时使用
Set myRange却使用Selection? -
我对 excel 和 vba 还很陌生,这是一个草稿,以后有机会我会修复它。
标签: vba excel conditional-formatting