【问题标题】:VBA: Remove all the cells different to a specific font colorVBA:删除与特定字体颜色不同的所​​有单元格
【发布时间】:2016-09-12 04:02:33
【问题描述】:

我有一个 Excel,我只想保留确定字体颜色的值,在本例中为红色。 我有一个循环,逐个单元格地检查单元格是否符合该条件。代码是:

 For nrow = 1 To frow
        For ncol = 1 To fcol

            If Cells(nrow, ncol).Font.Color <> RGB(255,0,0) Or Cells(nrow, ncol).Font.ColorIndex = 0 _
                Or Cells(nrow, ncol).Font.Color = xlNone Then
                    Cells(nrow, ncol).ClearContents
                End If

        Next
    Next

但它不能正常工作。有未删除的单元格。显然,这些单元格的字体设置为“自动”,条件“if”忽略了这些单元格。我不明白。它应该可以工作,因为该值应该与我在条件“if”中指示的值不同。

所以我的问题是,如何删除那些自动设置字体颜色的单元格?我需要做什么?

【问题讨论】:

  • 我会使用 VBA 常量作为红色 vbRed 而不是 RGB 值作为标准做法,并在您手动执行删除操作时尝试录制宏,看看该代码与您的代码有何不同。
  • 我发现了一个有效的转机。如果字体颜色为红色,则更改透视图并且不执行任何操作,否则删除内容。
  • 如果您仍然感兴趣:If Cells(x y).Font.ColorIndex = xlAutomatic

标签: vba excel fonts colors


【解决方案1】:

我为 POC 测试了以下代码(仅)。我怀疑删除方法后它的行计数器问题。

将以下数据放入工作表(A 列):
1
2(保持自动颜色)
3(将颜色设置为红色)
4(将颜色设置为红色)
5(设置任何其他颜色)
6

For counter = 1 To 6
    If Sheets.Item(1).Range("A" & counter).Font.Color <> 255 Then  ' if color is <> red
        If Sheets.Item(1).Range("A" & counter).Value = "" Then Exit For
        Sheets.Item(1).Range("A" & counter).Delete
        counter = counter - 1
    End If
Next

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 2019-02-19
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    相关资源
    最近更新 更多