突出显示非活动工作簿中的活动单元格

时间:2016-06-27 13:33:33

标签: excel vba excel-vba

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

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

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

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

谢谢!

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

2 个答案:

答案 0 :(得分: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的情况下做你正在尝试的事情。

答案 1 :(得分:0)

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

激活MySheet后,您可以直接调用ActiveCell,如下所示:

工作示例

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

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