首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用条件更改表格行的颜色

使用条件更改表格行的颜色
EN

Stack Overflow用户
提问于 2020-06-13 00:00:09
回答 1查看 208关注 0票数 0

我正在尝试编写一个VBA,以便在单元格的内容与前一个单元格的内容不同时更改表行的颜色(在两个不同的单元格之间)。行n. 3必须具有这样的颜色: RGB(221,245,253),而另一种颜色是白色。我不知道哪一个是逻辑代码,以及如何在不改变字体颜色的情况下改变单元格的背景颜色。

代码语言:javascript
复制
Public Sub Overview()

Dim Ovtask As String
Dim Ovn, Ovi As Integer

Ovn = Range("B2").CurrentRegion.Rows.Count

Range("B3:C3").Font.Color = RGB(221, 245, 253)
For Ovi = 3 To Ovn + 1
Ovtask = Range("B" & Ovi)
    If Range("B" & Ovi + 1) = Ovtask Then
        Range("B" & Ovi + 1 & ":" & "C" & Ovi + 1).Font.Color = Range("B" & Ovi & ":" & "C" & Ovi).Font.Color
        Else
        Range("B" & Ovi + 1 & ":" & "C" & Ovi + 1).Font.Color = RGB(0, 0, 0)
    End If
Next Ovi
End Sub

在链接的图像中,您可以看到预期的结果

EN

回答 1

Stack Overflow用户

发布于 2020-06-13 02:19:30

正如BigBen在注释中所述,要设置单元格的颜色,可以使用Interior.Color。我想过条件格式,但我认为你是对的,在这种情况下是不可能的。

您在代码中使用的逻辑是有缺陷的:一旦它将一行设置为白色,它将永远不会将任何行设置为蓝色:要么下一行相等,然后您将其设置为白色,因为当前行是白色的,或者它不相等,然后您无论如何都将其设置为白色。

看一下下面的代码片段:我声明了一个布尔变量UseHighlightColor,该变量跟踪当前行是否需要蓝色,并相应地设置Interior.Color。对颜色的一些备注:

  • 白色是RGB(255, 255, 255)RGB(0, 0, 0)结果为黑色。
  • 有一个可以使用的预定义常量vbWhite
  • 要将单元格设置为透明而不是白色,可以使用ColorIndex = xlNone.

代码中需要注意的一点是:您使用的是未限定的Range,因此VBA会自动引用ActiveSheet (当前具有焦点的工作表)。这并不总是您使用的工作表。在我的例子中,我已经编写了With ActiveSheet,但是你可以很容易地修改它,这样代码就会使用你想要的工作表,比如ThisWorkbook.Sheets(1)。在With中,我使用语法.Range (前导为.),这告诉VBA使用With-clause中定义的对象(工作表)。不要依赖于ActiveSheet (也不要使用Activate)。

代码语言:javascript
复制
With ActiveSheet
    Ovn = .Range("B2").CurrentRegion.Rows.Count

    Dim useHighLightColor As Boolean
    useHighLightColor = True

    For Ovi = 3 To Ovn + 1
        Dim currentCell As Range
        Set currentCell = .Range("B" & Ovi)
        If useHighLightColor Then
            currentCell.Resize(1, 2).Interior.Color = RGB(221, 245, 253)
        Else
            ' curentCell.Resize(1, 2).Interior.Color = vbWhite
            currentCell.Resize(1, 2).Interior.ColorIndex = xlNone
        End If

        If currentCell <> currentCell.Offset(1, 0) Then
            ' Switch color
            useHighLightColor = Not useHighLightColor
        End If
    Next Ovi
End With
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62348028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档