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