如何在 Excel 中设置“冻结突出显示行”?

如何在 Excel 中设置“冻结突出显示行”?

关于如何设置突出显示的水平行/窗口,当我上下滚动行时,该行/窗口保持在屏幕上的相同固定位置,有什么建议吗?我想到的是一种水平冻结窗格,当行在滚动时经过它时,可以突出显示行。为了更清楚,假设现在我突出显示了第 20 行。如果我向下滚动 1 行,现在我会突出显示第 21 行,依此类推。就像我在显示器上贴了一条彩色透明胶带,当行从胶带下面经过时,它们就会突出显示。是否可以设置宏或 VBA 代码来执行此操作?

答案1

主要的挑战是检测滚动事件(详情请见 CPearson.com

如果您想使用向上和向下箭头(仅限键盘)滚动,请尝试下面的代码

在 ThisWorkbook 模块中添加:

Option Explicit

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.EnableEvents = False
    HighlightCurrentRow Sh, Target
    Application.EnableEvents = True
End Sub

在标准模块中添加:

Option Explicit

Public Sub HighlightCurrentRow(ByVal Sh As Object, ByVal Target As Range)
    Dim ur As Range, thisRow As Long, prevRow As Long, found As Range
    Dim back1 As Long, fore1 As Long, back2 As Long, fore2 As Long

    back2 = RGB(111, 0, 0)      'Background color - dark red
    fore2 = RGB(255, 255, 0)    'Foreground color - yellow

    Set ur = Sh.UsedRange
    thisRow = Target.Row

    Application.FindFormat.Interior.Color = back2
    Set found = ur.Cells.Find(What:="", After:=ur.Cells(1), SearchFormat:=True)

    If Not found Is Nothing Then
        prevRow = IIf(found.Row < ur.Rows.Count, found.Row + 1, found.Row - 1)
        back1 = ur.Cells(prevRow, ur(1).Column).Interior.Color
        fore1 = ur.Cells(prevRow, ur(1).Column).Font.Color
        ur.Rows(found.Row).Interior.Color = back1
        ur.Rows(found.Row).Font.Color = fore1
    End If

    If Target.Row > 1 And Not Intersect(ur, Target) Is Nothing Then
        If thisRow > 15 Then Application.ActiveWindow.ScrollRow = thisRow - 15
        ur.Rows(thisRow).Interior.Color = back2
        ur.Rows(thisRow).Font.Color = fore2
    End If
End Sub

现在,在任何工作表上,当您单击包含数据的单元格时,整行将以深红色背景和黄色字体突出显示

如果活动单元格位于第 16 行或更高行,则窗口将向上或向下滚动(滚动行偏移 15 行),并且活动行将突出显示,但如果单元格位于 UsedRange 之外,则不会突出显示任何行

工作表1

答案2

@design95,根据您的需求,我想向您展示如何突出显示从第 1 行开始算起的每 20 行。

按着这些次序。

  1. 选择数据范围,如 (A1:Az1000)。
  2. 转到条件格式。
  3. 点击新规则并选择使用公式格式的选项。
  4. 写下这个公式。

=AND(($A1=1),MOD(ROW($A1),20)=0)

  1. 最后选择填充颜色和其他。

注意:值 20 是行号,可以根据需要替换为其他值。

接下来是如何突出显示您选择的行或活动行。

按照前面四个步骤,写出这个公式,

=CELL("行")=ROW()

完成选择颜色和其他内容。

最后一个是,右键单击 Sheet TAB,点击查看代码并编写这个简单的代码。

Private Sub Worksheet_SelectionChange(ByVal 目标作为范围)

应用程序.计算

子目录结束

希望这对你有帮助。请发表你的评论。

相关内容