Скрыть все объекты на листе - PullRequest
0 голосов
/ 04 декабря 2018

В моей рабочей тетради есть макрос, чтобы скрыть все объекты на листе.

Это работало до сегодняшнего дня.

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

Я также пытался Dim sObject As Shape

1 Ответ

0 голосов
/ 04 декабря 2018

Visible Worksheets.Count, который вы создаете с помощью цикла 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...