【问题标题】:Hiding more than one column based on cell color根据单元格颜色隐藏多个列
【发布时间】:2019-06-17 08:15:52
【问题描述】:

我有一个带有条件格式的非常大的电子表格,如果某些参数为真,它会将单元格变为红色(颜色 255)。这部分工作正常。

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

任何想法将不胜感激。

【问题讨论】:

  • 获取宏需要执行的什么的逻辑和要求是重要的第一步。要在此处发布问题,下一步是使用创建minimal, complete, and verifiable example 的指南重新构建您的问题。您将获得所需的所有帮助。
  • 您使用的是什么版本的 Excel?对于更高版本,您可以直接访问条件格式颜色。对于早期版本,您必须重新编码条件。

标签: excel vba


【解决方案1】:

请尝试像这样检查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

【讨论】:

    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多