Private Sub Workbook_Deactivate()
ThisWorkbook.ActiveSheet.Selection.Copy
End Sub
我想在已停用的工作簿中复制所选内容。但这并不起作用,事实上,我遇到了运行时错误。
答案 0 :(得分:1)
Private Sub Workbook_Deactivate()
ThisWorkbook.Windows(1).Selection.Copy
End Sub
<强>解释强>
ActiveSheet和Selection都是Application对象的子对象,而不是Workshet或Workbook对象。 (请参阅MSDN:Selection和ActiveSheet。)选择表示活动窗口中当前选定的项目。与ActiveSheet相同。
现在结果是可以为它们指定窗口对象。通常,每个工作簿都有一个窗口,但您可以为每个打开的工作簿创建多个窗口。无论如何,您可以单击并选择的每个打开的工作簿将至少有一个窗口。这是whateverworkbook.Windows(1)
。
ThisWorkbook
始终引用运行宏的工作簿(这意味着实际包含VBA代码的工作簿)。在你的情况下,那是你要离开的那个。 (除非您希望宏从您正在停用的任何工作簿中运行,在这种情况下,您必须提供一个自定义事件处理程序来捕获每个工作簿停用事件...)
就是这样,真的。您可以引用其他工作簿中的选择,您只需通过它Window
进行攻击。
感谢这个好问题,我今天学到了非常有价值的东西。 :)