Excel VBA, UnHiding Sheets в массиве, ошибка времени выполнения '13': несоответствие типов - PullRequest
1 голос
/ 20 апреля 2019

Я пытаюсь показать определенные листы, используя массив, но получаю ошибку времени выполнения '13'. Именно эта строка кода дает мне ошибку:

Worksheets(WS).Visible = True

Мне удалось скрыть определенные листы с помощью массива (я обращаюсь к кодовым именам листов, чтобы избежать будущих проблем с реферингом), см. Код ниже:

Sub Hide_sheets_By_CodeName()

Dim Ws_Array As Variant
Set Ws_Array = Sheets(Array(Tiger.Name, Dog.Name, Cat.Name))
Ws_Array.Visible = False

End Sub

Чтобы показать их, я прочитал, что вы должны перебирать каждый лист в массиве. Я использовал этот код для этого (и здесь я получаю ошибку):

Sub UnHide_sheets_By_CodeName()
Dim WS As Worksheet
Dim Ws_Array As Variant

Set Ws_Array = Sheets(Array(Tiger.Name, Dog.Name, Cat.Name))

For Each WS In Ws_Array
    Worksheets(WS).Visible = True

Next

End Sub

Любая помощь высоко ценится:)

1 Ответ

1 голос
/ 20 апреля 2019

WS_Array - это объект Type Sheets, то есть элемент является листом. Поэтому Worksheets(WS).Visible = True встречается с ошибкой 13, так как Worksheets(name of sheet) ожидает строку, а не объект.

Либо вы меняете цикл for на

For Each WS In Ws_Array    
    Worksheets(WS.Name).Visible = xlSheetVisible
Next

или

For Each WS In Ws_Array
    WS.Visible = xlSheetVisible    
Next
...