如何根据工作表的代号设置工作表对象?

时间:2014-09-12 12:28:50

标签: excel vba excel-vba

工作表名称可能会更改。因此,我想根据工作表的代号设置工作表对象。我怎么能这样做?

到目前为止,我最好的尝试是:

Sub UpdateNameDropdown()

    Dim wksName As String
    wksName = ThisWorkbook.Sheets(Sheet16).Name

    Dim wks As Worksheet
    Set wks = Sheets(wksName)

End Sub

但我在行wksName = ThisWorkbook.Sheets.Sheet16.Name

上遇到类型不匹配错误

3 个答案:

答案 0 :(得分:4)

此?

Sub Sample()
    Dim wks As Worksheet

    Set wks = Sheet16

    With wks
        Debug.Print .Name
        '~~> Do what you want
    End With
End Sub

答案 1 :(得分:1)

这使用代号作为 String

Sub CodeIt()
    Dim CodeName As String
    CodeName = "Sheet1"
    Dim WS As Worksheet, GetWorksheetFromCodeName As Worksheet
    For Each WS In ThisWorkbook.Worksheets
        If StrComp(WS.CodeName, CodeName, vbTextCompare) = 0 Then
            Set GetWorksheetFromCodeName = WS
            Exit For
        End If
    Next WS
    MsgBox GetWorksheetFromCodeName.Name
End Sub

答案 2 :(得分:0)

谢谢Gary的学生。我将你的功能中等化为以下内容:

Function GetWorksheetFromCodename(codeName As String) As Worksheet
    Dim wks As Worksheet
    For Each wks In ThisWorkbook.Worksheets
        If StrComp(wks.codeName, codeName, vbTextCompare) = 0 Then
            Set GetWorksheetFromCodename = wks
            Exit For
        End If
    Next wks
End Function