【问题标题】:VBA Font Conditional Formatting in ExcelExcel中的VBA字体条件格式
【发布时间】:2014-07-07 12:57:52
【问题描述】:

所以我认为在 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 种条件格式,但如果是这种情况,我会认为填充颜色也不起作用,但确实如此。

【问题讨论】:

    标签: vba excel excel-2007 conditional-formatting


    【解决方案1】:

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

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

    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 并再次向下和向上滚动,单元格就可以了。

    【讨论】:

      猜你喜欢
      • 2011-10-02
      • 2016-10-02
      • 2017-11-03
      • 2014-12-27
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 2012-01-14
      相关资源
      最近更新 更多