【问题标题】:Is it possible to clear a specific fill colour of cells within my workbook是否可以清除我的工作簿中单元格的特定填充颜色
【发布时间】:2019-03-29 13:03:04
【问题描述】:

我发现了与我的问题类似的问题,但它并没有解决我想要解决的确切问题。其他问题是更改填充颜色,但指出了大多数时间范围,这可能对我的代码没有用处。基本上我正在做的是我目前在 excel 中运行一个宏,它查看整个工作簿中的一百多个不同范围。每个范围只能是 excel 中的硬编码数字,或者仅包含公式。如果一个单元格在一个应该只包含硬编码数字的范围内是一个公式,那么该单元格将变为绿色。如果应该只包含公式的范围内的单元格是硬编码的,则该单元格将变为红色。然后用户查看这些彩色单元格并修复错误。然后我正在制作一个宏来将这些彩色单元格清除为白色或其他颜色。我该怎么做呢?这很可能是一个简单的问题,但由于某种原因我一直无法弄清楚。我只希望这些特定颜色的单元格改变填充颜色。

这是我的代码的开始,这是我想要实现的非常基本的大纲

Sub Clear_Fill()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    If Cells.Interior.Color = 50000 Or Cells.Interior.Color = 66000 Then
        Cells.Interior.Pattern = xlNone
    End If
Next ws
End Sub

【问题讨论】:

  • 您需要逐个遍历工作表中的单元格并进行测试。你不能大规模地这样做。
  • “如果一个单元格在一个应该只包含硬编码数字的范围内是一个公式,那么那个单元格就会变成绿色”——你的意思是你有条件格式来改变单元格的颜色吗?
  • 我没有使用条件格式我做了一个 vba 代码来做到这一点。
  • 如果您使用条件格式(=ISERROR(FORMULATEXT(A1))=NOT(ISERROR(FORMULATEXT(A1)))),您可以删除条件以去除颜色
  • 如果您有应用颜色的现有代码(发布此代码会很有帮助),那么修改它以删除任何不再适用的颜色可能会更容易。

标签: excel vba


【解决方案1】:

下面的代码循环工作簿中的所有工作表,循环工作表中的所有单元格,如果条件满足清晰颜色

Option Explicit

Sub Clear_Fill()

    Dim ws As Worksheet
    Dim cell As Range

    For Each ws In ThisWorkbook.Worksheets

        With ws
            For Each cell In .UsedRange
                If Cell.Interior.Color = 50000 Or Cell.Interior.Color = 66000 Then
                    Cell.Interior.Pattern = xlNone
                End If
            Next cell
        End With

    Next ws

End Sub

【讨论】:

  • @CanadianBeaver 很高兴听到这行得通。如果此代码满足您所需的投票,则它是帮助其他人解决相同问题的正确答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 2020-01-11
  • 2017-06-05
相关资源
最近更新 更多