根据单元格颜色隐藏多列

时间:2019-01-23 17:09:56

标签: excel vba

我有一个很大的电子表格,其条件格式会在某些参数为true时将单元格变为红色(颜色255)。这部分工作正常。

我的问题是,如果第一列中有一个带有红色单元格的单元格,则我试图编写一个宏以隐藏整个列和其左侧的整个列。例如,如果N列中有一个红色单元格,它将隐藏N列和M列。将需要对所有“ I:HC”列运行此查询(就像我说的那样,它是一个巨大的电子表格。)将将此宏与“表单控制按钮”相关联,以便在激活该按钮时,这些列将隐藏。

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

请尝试像这样检查DisplayFormat

Private Sub HideRedFilledColumnPairs()
    Dim ws As Worksheet
    Dim lastRow As Long, lastColumn As Long
    Dim r As Long, c As Long

    Set ws = ActiveSheet

    ' get the used range
    lastRow = ws.Cells.Find(What:="*", LookIn:=xlFormulas, _
        SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    lastColumn = ws.Cells.Find(What:="*", LookIn:=xlFormulas, _
        SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

    ' loop your columns row by row
    For c = ws.Range("I:I").Column To ws.Range("HC:HC").Column ' or To lastColumn
        For r = 1 To lastRow
            If ws.Cells(r, c).DisplayFormat.Interior.Color = vbRed Then
                ws.Columns(c).EntireColumn.Hidden = True
                ws.Columns(c - 1).EntireColumn.Hidden = True
                Exit For    ' take next column
            End If
        Next r
    Next c

    Set ws = Nothing
End Sub