因此,我认为在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] 删除。
我来说两句