Excel 隐藏图纸上的所有对象

Excel 隐藏图纸上的所有对象,excel,vba,Excel,Vba,在我的工作簿中,我有一个宏来隐藏工作表上的所有对象 它一直工作到今天 Sub Hiding() Dim sObject As Object Dim a As Integer, v As Integer 'Count all visible Worksheets v = 0 For Each s In ActiveWorkbook.Worksheets If s.Visible = True Then v = v + 1

在我的工作簿中,我有一个宏来隐藏工作表上的所有对象

它一直工作到今天

Sub Hiding()
    Dim sObject As Object
    Dim a As Integer, v As Integer

'Count all visible Worksheets
    v = 0
    For Each s In ActiveWorkbook.Worksheets
        If s.Visible = True Then
            v = v + 1
        End If
    Next s

'Hide all Objects
    For a = 2 To v
        For Each sObject In Worksheets(a).Shapes
            sObject.Visible = False
        Next
    Next
End Sub

我还尝试了将sObject作为形状进行调整

可见工作表。使用v=v+1循环创建的计数应该是可见工作表顺序索引的数组,而不是可见工作表的总数。循环遍历时,a应检索数组中的值,而不仅仅是1、2、3等工作表索引号

dim w as long, v as long, a as long, vws as variant

'prep vars
v = 0
redim vws(1 to ActiveWorkbook.Worksheets.Count)

'IDENTIFY all visible Worksheets
For w=2 to ActiveWorkbook.Worksheets.count    'note I started at the 2nd worksheet here
    If ActiveWorkbook.Worksheets(w).Visible Then
        v = v + 1
        vws(v) = w
    End If
Next s

redim preserve vws(1 to v)

'Hide all Objects
For a = lbound(vws) To ubound(vws)
    For Each sObject In ActiveWorkbook.Worksheets(vws(a)).Shapes
        sObject.Visible = False
    Next
Next

你不能用
ActiveWorkbook.Worksheets.Count
替换
v
,然后完全删除第一个循环吗?(当工作簿中的工作表少于2张时,也不包括故障保护检查)