0

我想首先声明我几乎没有编码经验。我在网上找到了一个 VBA 片段,用于突出显示整个选定范围(仅作为视觉指南):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    Application.ScreenUpdating = False
    ' Clear the color of all the cells
    Cells.Interior.ColorIndex = 0
    With Target
        ' Highlight the entire column that contain the active cell
        .EntireRow.Interior.ColorIndex = 8

    End With
    Application.ScreenUpdating = True
End Sub

我还想让光标跳转到“J”列。例如,在按“确定”后搜索包含“草莓浇头”字样的单元格后,包含该文本的单元格将变为活动状态,并且由于 VBA 代码,整行都会突出显示。

我需要处理的第一个单元格在“J”列中。我还可以选择 J 列以及突出显示的行吗?

非常感谢您抽出宝贵的时间,并感谢您提供的任何帮助。

4

1 回答 1

2

我的三分钱

  1. 如果您使用的是 xl2007+,则不要使用Target.Cells.Count. 使用Target.Cells.CountLargeelse 如果用户尝试通过按CTRL+选择所有单元格,您将收到溢出错误,A因为Target.Cells.Count无法保存Long值。
  2. 如果要选择行和列,则可能需要关闭事件,否则可能会陷入无限循环。
  3. 由于您正在处理事件,因此请使用错误处理。

这是你正在尝试的吗?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Rw As Long, Col As Long
    Dim ColName As String
    On Error GoTo Whoa

    If Target.Cells.CountLarge > 1 Then Exit Sub

    Application.ScreenUpdating = False
    Application.EnableEvents = False

    ' Clear the color of all the cells
    'Cells.Interior.ColorIndex = 0

    With Target
        Rw = .Row
        Col = .Column
        ColName = Split(Cells(, Col).Address, "$")(1)

        ' Highlight the entire column that contain the active cell
        '.EntireRow.Interior.ColorIndex = 8

        Range(ColName & ":" & ColName & "," & Rw & ":" & Rw).Select

    End With
LetsContinue:
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
End Sub
于 2013-11-05T17:19:35.423 回答