Excel中的VBA字体条件格式

110SidedHexagon

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

杰兹

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

我最初为整个范围创建了一条规则,但仅对某些单元格做出了反应。此子循环范围内的所有单元格,并将格式应用于每个单元格。问题是,在我的测试中,它跳过了每一列的第二行。老实说,我不知道为什么。也许某些优秀的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

希望您不要遭受我在这里遇到的错误(是错误吗?)。

编辑:问题似乎是一些图形问题。如果我运行潜水艇并再次上下滚动,则单元格可以。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章