Excel VBA Macro设置条件格式高亮周末列却全区域高亮求助
错误原因
- 规则类型参数错误:你调用
FormatConditions.Add时传入的第一个参数是xlCellValue,该类型仅用于判断当前被格式化的单元格自身的值是否符合要求,而你的判断逻辑是引用同一列第5行的单元格,属于自定义公式判断,需要将第一个参数改为xlExpression。 - 格式绑定对象错误:你在
With cond1、With cond2代码块中直接修改了rg.Interior和rg.Font,相当于直接给整个选中范围强制设置了黄色填充,完全没有和条件格式规则绑定,正确写法是修改cond1、cond2自身的Interior和Font属性。 - 条件公式格式错误:VBA中设置条件格式的公式需要以等号开头,原代码缺少开头的等号也会导致规则判定异常。
修正后完整代码
Sub test() Dim rg As Range Dim cond1 As FormatCondition, cond2 As FormatCondition Set rg = Range("$C$4:$AG$14") ' 清除已有条件格式 rg.FormatConditions.Delete ' 定义条件格式规则,使用xlExpression类型 Set cond1 = rg.FormatConditions.Add(xlExpression, Formula1:="=WEEKDAY(C$5)=7") Set cond2 = rg.FormatConditions.Add(xlExpression, Formula1:="=WEEKDAY(C$5)=1") ' 给条件规则绑定格式 With cond1 .Interior.Color = vbYellow .Font.Color = vbBlack End With With cond2 .Interior.Color = vbYellow .Font.Color = vbBlack End With End Sub
修正后运行代码,就会仅对第5行日期为周六、周日的对应列在$C$4:$AG$14范围内高亮填充黄色,符合预期效果。
内容的提问来源于stack exchange,提问作者DEEK
相关产品推荐
相关产品推荐

