EntireRow.Delete正在影响我的条件格式范围

时间:2017-07-28 16:22:52

标签: excel vba excel-vba

我正在寻找删除行而不影响我已应用于我的工作表的条件格式范围。我希望我的CF范围保持不变(例如$ A $ 1:$ A $ 5000)但是每当我的代码删除一行时,第二个数字(5000)减少一个,当我希望它保持不变时。无论如何我可以删除没有它影响CF的行吗?

我也知道每次运行宏时我都可以使用动态范围将条件格式应用到工作表中,但是我宁愿不为这个宏重写~20 CF场景到VBA的麻烦如果我可以避免它一起改变。这是我的循环,它遍历行并在满足条件时删除它们:

ActiveWorkbook.Worksheets("Master Sheet").Activate
Last = Cells(Rows.Count, "R").End(xlUp).Row

    For i = Last To 1 Step -1
        If (Cells(i, "R").Value) = "Business" Then
            Cells(i, "A").EntireRow.Delete
        End If
    Next I

我认为另一种解决方案是添加一个简单的循环来循环遍历我设置的所有CF并将它们拖到lastrow。这会是一个可行的替代方案吗?

1 个答案:

答案 0 :(得分:0)

这个快速循环应该将工作表上每个CFR的终止行更改为5000,假设它们从第1行开始。

With ActiveWorkbook.Worksheets("Master Sheet").Cells
    For cfr = 1 To .FormatConditions.Count
        With .FormatConditions(cfr)
            If .AppliesTo.Cells(.AppliesTo.Cells.Count).Row < 5000 Then
                .ModifyAppliesToRange Range:=.AppliesTo.Cells(1).Resize(5000)
            End If
        End With
    Next cfr
End With