【问题标题】:columns and rows highlight in VBAVBA中的列和行突出显示
【发布时间】:2021-03-25 05:20:15
【问题描述】:

我一般是编程新手,但我开始迈出进入 VBA 世界的第一步。

我被要求创建一个宏来突出显示选定的单元格(同时考虑参考列和行),我设法将网上找到的一些代码放在一起,如下所示:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'for removing any existing color from the entire sheet

    Worksheets("Sheet1").Cells.Interior.ColorIndex = xlNone

    Dim a As Integer
    Dim b As Integer
    a = ActiveCell.Row
    b = ActiveCell.Column

    Worksheets("Sheet1").Rows(a).Interior.ColorIndex = 37
    Worksheets("Sheet1").Columns(b).Interior.ColorIndex = 40
    Worksheets("Sheet1").Cells(a, b).Select

    If (a = 1 And b = a) Then Worksheets("Sheet1").Cells.Interior.ColorIndex = xlNone
End Sub

反正有一些错误:

  1. 我想取消选择突出显示再次单击相同的单元格而不是单击 A1 单元格。
  2. 启用此宏时很难选择列(需要在启用时双击该列 只有一个,但是当我必须删除数据透视表并因此在 同一时间)。
  3. 最重要的是,它与其他宏冲突。

您能帮我获得一个可以正常工作的干净宏吗?非常感谢。

【问题讨论】:

    标签: excel vba highlight


    【解决方案1】:
    1. 您的代码无法通过单击同一单元格来取消选择突出显示,因为这不会触发SelectionChange 事件。您的解决方法可以是编写与不同事件相关的不同宏以关闭突出显示(例如,双击事件)。我觉得这只会导致更多的问题而不是它的价值。您最好创建一个宏来关闭突出显示,并为其分配一个键盘快捷键。

    2. 这里的问题是您当前的代码明确告诉应用程序选择活动单元格(不必要地)。因此它将取消选择整个列,而是选择单元格。只需从您的代码中删除以下行:

      Worksheets("Sheet1").Cells(a, b).Select

    3. 如果您需要更具体的帮助,则需要分享有关冲突类型的更多详细信息。

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 2018-12-12
      • 1970-01-01
      • 2021-02-09
      • 2012-06-10
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2012-11-10
      相关资源
      最近更新 更多