如何突出显示 excel 中的活动行,然后 return 突出显示 VBA 中的基本背景色

How to highlight active row in excel and then return to base background color in VBA

如何在 VBA 中突出显示 excel 中的活动行。 and then when another row is selected, return that row to base background color, and highlight the new row.

还有如何使用用户表单上的清除按钮清除所有突出显示的行。

所以这里有两个问题,一个是突出显示和取消突出显示活动行,另一个是通过按表单上的清除按钮清除所有突出显示。

我知道我可以使用 Ret.EntireRow.Interior.ColorIndex = 6 突出显示一行,但我找不到要取消突出显示的代码。

感谢您的帮助。

您可以在更改导航到的单元格行的颜色之前使用您的 'clear all' 功能。

打开 VB 编辑器并右键单击 --> 查看您希望行突出显示的作品sheet 的代码。

粘贴此代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Me.Range("A1:XFD1048576").Interior.ColorIndex = 0
    Target.EntireRow.Interior.ColorIndex = 6

End Sub

此代码的运行方式如下:每当用户更改他或她在 sheet 上选择的单元格时,代码将首先清除整个 sheet 中现有的突出显示,然后将对用户移动到的目标单元格的行应用新的突出显示。

这行代码:

Worksheets("YourSheetName").Range("A1:XFD1048576").Interior.ColorIndex = 0

将清除作品中所有单元格的颜色sheet。

您可能希望将 Range("A1:XFD1048576") 限制在工作簿的可用范围内,因为这会提高性能。在我的机器上,当我移动单元格时,我看到一个非常微妙但仍然明显的颜色延迟(因为我正在清除 sheet 中的所有单元格,而不仅仅是我想要的单元格)。如果这样做,您可能不想使用 .EntireRow 属性,而是必须枚举工作簿中您希望该行突出显示的距离。

更新

试试下面的这段代码,无需清除整个工作sheet。我使用 .ColorIndex=xlNone 而不是将其设置为 0 应该 保留您的 table 格式。我在 Excel 2010 年进行了测试,并将一些数据格式化为 table,它突出显示了正确的行并取消突出显示另一行,并保留了 table 格式。

Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    Static rr

    If rr <> "" Then
        With Rows(rr).Interior
            .ColorIndex = xlNone
        End With
    End If


    r = Selection.Row
    rr = r

    With Rows(r).Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
End Sub

诀窍是使用 Static。这允许变量在过程终止后继续存在,因此它会记住它突出显示的最后一行,然后相应地执行取消突出显示操作。

程序首先检查是否设置了 rr,如果没有设置则继续,如果设置则 rr 表示之前突出显示的行。

这可以在不改变基本背景颜色的情况下完成, 分两步,

  1. 设置条件格式规则,如果某个公式为真,则突出显示整行。

In the formula field, enter this formula: =OR(CELL("row")=CELL("row",A1))

  1. 编写一个宏,在进行新选择时重新计算所选单元格。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Target.Calculate End Sub

点击 Alt + F11 返回 Excel 并且您将使用突出显示的活动单元格行您选择的格式,而不更改单元格的基色。

详细讲解请访问, highlighted the entire row of the active cell.