【问题标题】:Highlight active cell in inactive workbook突出显示非活动工作簿中的活动单元格
【发布时间】:2016-10-29 13:12:44
【问题描述】:

我在一个工作簿中运行宏,每次运行后我都需要它转到一个非活动工作簿并突出显示活动单元格(或者,在我转到另一个工作簿之前处于活动状态的单元格)。这是我正在尝试的:

myWorkbook.Sheets("mySheet").Activate
Worksheets("mySheet").ActiveCell.Interior.ColorIndex = 8

我不断从第二行收到一个错误,说该对象不支持此属性或方法。工作表已打开,但当前不是此代码运行时我所在的工作表。

如果可能的话,我可以解决这个问题,然后让它将光标/选择向下移动到下一个单元格吗?

谢谢!

编辑:我也试过myWorkbook.Sheets("mySheet").ActiveCell.Interior.ColorIndex = 8

【问题讨论】:

  • 你试过myWorkbook.Worksheets("mySheet").Cells(1,1).Interior.ColorIndex = 8吗? (您必须将 (1,1) 调整为正确的地址)。
  • @Ralph 是的,我之前尝试过。抱歉,我刚刚发布了我尝试过的最新版本。我还确保工作簿启用了宏,但这并没有解决问题。

标签: vba excel


【解决方案1】:

您正在使用ActiveCell,我建议您不要这样做。 Avoid using .Select/.Activate

如果您要突出显示活动单元格,则需要将宏放在工作表模块中:

Private Sub Worksheet_SelectionChange(ByVal target As Range)
    Target.Interior.ColorIndex = 8
End Sub

正如所指出的,在您的代码中,您从未选择过单元格,因此您会收到错误消息。

此外,您会注意到此方法使所有其他单元格保持突出显示。如果您没有其他需要突出显示的单元格,请在该行之前添加cells.interior.colorindex = 0。另外,here's a thread 解决了这个问题。你可以在没有 VBA 的情况下做你想做的事情。

【讨论】:

  • 我还能从不同的工作簿运行它吗?我要突出显示的工作表位于不同的工作簿中。您可以编辑以添加要突出显示的工作簿的参数吗?
  • @pez - 在您的宏中,您知道要突出显示新工作簿中的哪个单元格吗?那会让事情变得更容易。有什么代码可以调用这个吗?
  • 是的。我要突出显示的工作表基本上是 A 列中大约 1,000 个数字的列表。我一次突出一个作为一个过程。因此,如果到目前为止我已经处理了前 99 个单元格,那么我用鼠标/光标(没有 VBA)选择的最后一个单元格是单元格 100。这就是我要突出显示的单元格 - 前 99 个单元格已经突出显示。下一个将是 101 等。如果可能的话,我宁愿尝试编写它以突出显示我最后选择的单元格,而不是硬编码一个数字。
  • @pez - 你能发布将调用单元格突出显示的代码吗?
  • 抱歉,我是 VBA 新手,上面的代码就是我所尝试过的。我不知道我调用 Sheets("mySheet").ActiveCell 是不正确的部分,所以我没有尝试调用特定的单元格。
【解决方案2】:

active cell 对象不属于worksheet object。这是因为只有一个活动单元格对象,而不是每张纸一个。

激活 MySheet 后,您可以像这样直接调用 ActiveCell:

工作示例

myWorkbook.Sheets("mySheet").Activate
ActiveCell.Interior.ColorIndex = 8

我同意@BruceWayne。如果可以,请避免致电SelectActivate

【讨论】:

  • 调用Activate有什么缺点?我可以在不调用的情况下突出显示非活动工作簿中的单元格吗?
  • @pez - 如您所见,您实际上必须activate 一个单元格,才能使用Activate。一个更好的方法是直接处理数据。如果您知道您的ActiveCell 将是C1,那么最好使用Range("C1").Interior.ColorIndex = ... 此外,ActiveCellActiveSheet 并不总是您可能想的那样,因此最好避免使用。
  • @BruceWayne 的回答中有一个link 突出了一些缺点。一个问题是您无法在代码运行时阻止用户移动焦点。一般来说,最好是明确的。在给定一些标准的情况下,选择正确单元格的代码比检查 UI 的状态更健壮。
猜你喜欢
  • 2019-06-16
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 2013-02-11
相关资源
最近更新 更多