Excel针对主题错误消息展示了非常特殊的行为。它并不是众所周知的受保护工作簿问题,因为我已经保护并且不受保护,只是为了排除潜在问题并且Workbook.ProtectStructure
和Workbook.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|xlSheetVisible
到xlSheetVisible
的反方向不会产生错误。但是,尝试在代码中复制此传递通过0但未能产生相同的容差并生成错误。我发现这个属性的行为有很多不一致之处。任何有关这里发生的事情的见解都会受到赞赏。