繁体   English   中英

如何获取工作表代码名称以激活特定工作表?

[英]How can I get worksheet code name to activate a specific worksheet?

我有一个“标签”名称为“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

这是一个解决方案:

Sub tester()
    Dim WBA As Workbook

    Set WBA = Workbooks("Book1")
    WorksheetByCodeName(WBA, "codeNameHere").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

可能想在尝试对它做任何事情之前检查返回值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM