使用VBA宏的动态条件格式
我对VBA相当陌生。我想有条件地格式化ActiveCell列中的单元格,以便在ActiveCell右侧4列的列中不存在时,它们以蓝色突出显示。我录制了一个宏,它对一组特定的列执行此操作,但我在更改它时遇到了问题,因此它无法根据ActiveCell的位置对任意组列工作。记录的代码如下所示使用VBA宏的动态条件格式,vba,excel,Vba,Excel,我对VBA相当陌生。我想有条件地格式化ActiveCell列中的单元格,以便在ActiveCell右侧4列的列中不存在时,它们以蓝色突出显示。我录制了一个宏,它对一组特定的列执行此操作,但我在更改它时遇到了问题,因此它无法根据ActiveCell的位置对任意组列工作。记录的代码如下所示 Range("Y8").Select Range(Selection, Selection.End(xlDown)).Select Selection.FormatConditions.Add Type:
Range("Y8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=COUNTIF(AC:AC, Y8)=0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
ActiveWindow.SmallScroll Down:=0
有谁能告诉我如何修改它,使Y8是ActiveCell,AC:AC是ActiveCell右边的第4列。谢谢。如果您想要VBA解决方案,请在发布的代码中使用R1C1引用,例如:
“=COUNTIF(C[4],R[]C[])=0”
这些是相对参照,Excel将自动计算并为您将其转换为正确的A1样式参照
或者,
如果宏的唯一目的是使这些单元格着色,则不需要宏
在第一列中选择数据,将单元格A1作为所选内容中的活动单元格(我在下面将其称为A列,将4列偏移量称为E列),然后转到条件格式
添加新的“基于公式的条件格式”
输入公式
=ISERROR(匹配(A1,E:E,0))
然后选择所需的格式
请注意,由于单元格引用是相对的,您可以非常轻松地将格式复制并粘贴到任意列,并且它仍将检查新列右侧的4列。
..=“=COUNTIF(“&ActiveCell.offset(0,4).entirecolumn.address(false,false)&“,&ActiveCell.address(false,false)&”)=0”
@TimWilliams这里是使用R1C1类型引用的好地方。它们将由Excel自动转换,因此您实际上根本不需要获取地址。只需尝试“=COUNTIF(C[4],R[]C[])=0”