无法设置工作表类的visible属性

时间:2017-01-01 09:19:16

标签: excel vba excel-vba

Excel针对主题错误消息展示了非常特殊的行为。它并不是众所周知的受保护工作簿问题,因为我已经保护并且不受保护,只是为了排除潜在问题并且Workbook.ProtectStructureWorkbook.ProtectWindows都是False。 WB没有Pivot或Chart相关对象,所以它也不是。它也只有一张可见的剩余纸张。事实上,当试图通过代码隐藏任何20张时发生错误。

下面的代码从标签名称和可见性设置ProtectedSheets的表格({1}}中提取数据,以了解如何在[-1, 0, 2]方法中设置该标签的可见性。作为Excel应用程序的开发人员,我试图隐藏包含用户不需要处理的内部App数据的特定选项卡。

Workbook_Close

执行包含Dim LO As ListObject: Set LO = [ProtectedSheets].ListObject Dim LR As ListRow Dim c1 As Range Dim c2 As Range For Each LR In LO.ListRows With LR.Range Set c1 = .Cells(LO.ListColumns("SheetName").Index) Set c2 = .Cells(LO.ListColumns("Visibility").Index) Worksheets(c1.text).Visible = c2 protectWS c1.text, True End With Next LR 属性的代码行后,Excel会生成主题错误消息。现在,这就是问题所在。如果将WS添加为Watch项,则可以在Watch窗格中编辑其Visible属性,而不会生成错误。同样,Visible属性同样可以在“立即”窗格中更改,而不会生成错误。但是,它会在“调试”窗格中停止。嗯...

为了增加更多的特性,在Watch和Immediate窗格中,我发现在尝试从Visible更改为0|xlSheetHidden时,我必须通过2|xlSheetVeryHidden传递Visible属性。相反,直接从-1|xlSheetVisiblexlSheetVisible的反方向不会产生错误。但是,尝试在代码中复制此传递通过0但未能产生相同的容差并生成错误。我发现这个属性的行为有很多不一致之处。任何有关这里发生的事情的见解都会受到赞赏。

0 个答案:

没有答案