Excel中的VBA字体条件格式

时间:2014-05-19 14:04:51

标签: vba excel-vba excel-2007 conditional-formatting excel

所以我认为在VBA中创建它们时格式化一组单元格会相对简单,但我想我错了。我的目标是将一组细胞分成黑色,除非将某个值输入到不同的细胞中。我遇到的问题是字体的格式由于某种原因不起作用。我甚至已经把宏从我想要的宏复制VBA但它总是在字体部分绊倒。填充颜​​色应该是黑色但字体部分会抛出错误:“应用程序定义的或对象定义的错误” 下面是宏录制器生成的代码(添加了我的公式),如果我在成功录制后尝试运行它,实际上会失败:

Range(Cells(35, 9 + (11 * (Range("OptionCount").Value + 1))), Cells(40, 9 + (11 * (Range("OptionCount").Value + 1)))).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$" & Ltrs & "$33 <>" & """Custom" & Range("OptionCount").Value & """"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorLight1
    .TintAndShade = 0
End With
With Selection.FormatConditions(1).Font 'Error Here
    .ThemeColor = xlThemeColorLight1
    .TintAndShade = 0
End With

我能想到的唯一一个导致问题的事情可能就是单元格上已有3种以上的条件格式,但如果是这种情况我会认为填充颜色也不起作用,但确实如此。

1 个答案:

答案 0 :(得分:0)

我有一个原始问题的解决方案(我希望),但遇到了另一个问题。 这2个潜水艇可以满足您的要求,但需要进行一些调整以适应您的具体情况。 sub del_format将删除给定范围内存在的所有格式,因此请小心。

我最初为整个范围创建了一个规则,但这只对某些单元格有所反应。此子循环遍历范围中的所有单元格,并将格式应用于每个单元格。问题是,在我的测试中,它会跳过每列的第二行。老实说,我不知道为什么。也许一些优秀的大师可以做出反应?

Option Explicit

Sub jzz()
Dim c As Range
Dim testRange As Range
Dim fCon As FormatCondition

Set testRange = Range("D1:H20")

Call del_format(testRange)

For Each c In testRange.Cells
    Set fCon = c.FormatConditions.Add(Type:=xlExpression, Formula1:="=$B$1<>33")
    With fCon.Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
    With fCon.Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
    Set fCon = Nothing
Next c
End Sub
Sub del_format(r As Range)

Dim a As Object
Dim c As Range
For Each c In r.Cells
    For Each a In c.FormatConditions
        a.Delete
    Next a
Next c

希望你不会遇到我在这里遇到的错误(这是一个错误吗?)。

编辑: 问题似乎是一些图形问题。如果我运行sub并再次向下滚动,单元格就可以了。