Как я могу получить кодовое имя листа для активации определенного листа? - PullRequest
0 голосов
/ 24 октября 2019

У меня есть лист с именем вкладки "Rpt_Group". Я также переименовал его кодовое имя в shData. Когда я использую VBA для активации листа с помощью «Rpt_Group», он работает нормально. Но когда я использую кодовое имя, я получаю сообщение об ошибке

"нижний индекс вне диапазона.

Это работает: WBA.Worksheets("Rpt_Group").Activate

Это делаетне работает: WBA.Worksheets("shData").Activate

Это не работает: WBA.shData.Activate

Dim WBA As Workbook

'Open the desired workbook
Set WBA = Workbooks.Open(Filename:="path & file name")

'Activate the desired worksheet
WBA.Worksheets("Rpt_Group").Activate 'this works

Это не работает: WBA.Worksheets("shData").Activate

Это не работает: WBA.shData.Activate

1 Ответ

1 голос
/ 25 октября 2019

Вот одно из решений:

Sub tester()
    Dim WBA As Workbook

    Set WBA = Workbooks("Book1")
    WorksheetByCodeName(WBA, "Sheet3").Activate

End Sub

'Get a worksheet with matching codeName (or Nothing if no match)
'    from a workbook wb
Function WorksheetByCodeName(wb As Workbook, codeName As String)
    Dim ws As Worksheet, rv As Worksheet
    For Each ws In wb.Worksheets
        If ws.codeName = codeName Then
            Set rv = ws
            Exit For
        End If
    Next ws
    Set WorksheetByCodeName = rv
End Function

Возможно, вы хотите проверить возвращаемое значение, прежде чем пытаться что-либо с ним сделать.

...