引用已停用的工作簿中的选择

时间:2016-03-24 06:27:36

标签: excel vba excel-vba

Private Sub Workbook_Deactivate()
    ThisWorkbook.ActiveSheet.Selection.Copy
End Sub

我想在已停用的工作簿中复制所选内容。但这并不起作用,事实上,我遇到了运行时错误。

1 个答案:

答案 0 :(得分:1)

该死! 可能!

Private Sub Workbook_Deactivate()

  ThisWorkbook.Windows(1).Selection.Copy

End Sub

<强>解释

ActiveSheet和Selection都是Application对象的子对象,而不是Workshet或Workbook对象。 (请参阅MSDN:SelectionActiveSheet。)选择表示活动窗口中当前选定的项目。与ActiveSheet相同。

现在结果是可以为它们指定窗口对象。通常,每个工作簿都有一个窗口,但您可以为每个打开的工作簿创建多个窗口。无论如何,您可以单击并选择的每个打开的工作簿将至少有一个窗口。这是whateverworkbook.Windows(1)

ThisWorkbook始终引用运行宏的工作簿(这意味着实际包含VBA代码的工作簿)。在你的情况下,那是你要离开的那个。 (除非您希望宏从您正在停用的任何工作簿中运行,在这种情况下,您必须提供一个自定义事件处理程序来捕获每个工作簿停用事件...)

就是这样,真的。您可以引用其他工作簿中的选择,您只需通过它Window进行攻击。

感谢这个好问题,我今天学到了非常有价值的东西。 :)