所以我认为在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种以上的条件格式,但如果是这种情况我会认为填充颜色也不起作用,但确实如此。
答案 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并再次向下滚动,单元格就可以了。