使用VBA更新条件格式范围?

时间:2016-05-18 13:42:28

标签: excel-vba vba excel

我尝试更新工作表上大约30行数据的条件格式设置范围。每个月我都会更新数据,并且我想运行一个宏来调整范围以合并新月份。我已经通过循环使用ChartObjects和SeriesCollection来更新系列范围的结尾,从而为我的图表做了这个。

要在条件格式化上执行此操作,我发现的所有内容都需要对范围(单元格引用或命名范围)进行硬编码,例如:

With Worksheets(1).Range("e1:e10").FormatConditions(1) 

我更喜欢循环浏览工作表的条件格式集合,但我无法在Excel VBA对象模型中找到此集合的任何证据。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:0)

这有点令人费解,因为在表单中循环formatconditions并没有什么好办法。但是,你可以循环遍历特殊单元,然后遍历它们的formatconditions并从那里挖掘出来:

Sub test()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    Dim rngCell As Range
    Dim lng As Long

    For Each rngCell In ws.Cells.SpecialCells(xlCellTypeAllFormatConditions).Cells
        For lng = 1 To rngCell.FormatConditions.Count
            On Error Resume Next
            Debug.Print rngCell.FormatConditions(lng).Formula1, rngCell.FormatConditions(lng).AppliesTo.Address
        Next lng
    Next rngCell
End Sub

我在dailydoseofexcel.com博客上从Dick Kusleika's excellent post on this very subject挖走了specialcells()想法。

答案 1 :(得分:0)

您可以使用以下代码:在此根据条件以黄色突出显示该行。您可以使用格式

LastColumnARows = WB_Source.Sheets(SheetName.Name).range("A" & Rows.Count).End(xlUp).Row  

                    With WB_Source.Sheets(SheetName.Name)

                        For i = 2 To LastColumnARows
                            If .range("A" & i).Value > [Condition] Then
                                With .range("A" & i & ":E" & i)
                                    .Interior.Color = vbYellow
                                    .Font.Color = vbBlack
                                End With
                            End If
                        Next i
                    End With