为什么Delete适用于ActiveWindow但不适用于ActiveWorkbook?

时间:2015-08-21 14:47:32

标签: excel vba excel-vba

我不知道为什么这不起作用......

Sheets("SampleSheet").Select
ActiveWorkbook.SelectedSheets.Delete

但这有效......

Sheets("SampleSheet").Select
ActiveWindow.SelectedSheets.Delete

在这两种情况下,工作表" SampleSheet"被选中了,对吗?

1 个答案:

答案 0 :(得分:0)

正如GSerg评论的那样,它不起作用,因为没有ActiveWorkbook.SelectedSheets属性。 Excel团队中的某个人想要创建一个返回所有选定工作表数组的属性。但是把它放在哪里?他们本可以把它放在工作簿级别,但是如果用户为同一个工作簿打开了两个窗口呢?他们可以在每个窗口中选择不同的工作表。使用哪个窗口?所以他们决定将它作为Window对象的属性。

一个好主意,也许,但他们可以把它放在两个地方。 Workbook和Window对象都具有ActiveSheet属性。当您引用ActiveWorkbook.ActiveSheet时,它似乎与ActiveWorkbook.Windows(1).ActiveSheet相同,而Windows(1)始终是活动窗口。他们可以为SelectedSheets做同样的事情,我认为他们应该有。

与此同时,您可以使用ActiveWorkbook.Windows(1).SelectedSheets来克服Excel团队缺乏一致性。