Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA宏的动态条件格式_Vba_Excel - Fatal编程技术网

使用VBA宏的动态条件格式

使用VBA宏的动态条件格式,vba,excel,Vba,Excel,我对VBA相当陌生。我想有条件地格式化ActiveCell列中的单元格,以便在ActiveCell右侧4列的列中不存在时,它们以蓝色突出显示。我录制了一个宏,它对一组特定的列执行此操作,但我在更改它时遇到了问题,因此它无法根据ActiveCell的位置对任意组列工作。记录的代码如下所示 Range("Y8").Select Range(Selection, Selection.End(xlDown)).Select Selection.FormatConditions.Add Type:

我对VBA相当陌生。我想有条件地格式化ActiveCell列中的单元格,以便在ActiveCell右侧4列的列中不存在时,它们以蓝色突出显示。我录制了一个宏,它对一组特定的列执行此操作,但我在更改它时遇到了问题,因此它无法根据ActiveCell的位置对任意组列工作。记录的代码如下所示

    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”