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

工作表名称可能会更改。 正因为如此,我想根据工作表的代号来设置工作表对象。 我怎样才能做到这一点?

我迄今为止的最佳尝试是:

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上得到一个types不匹配的错误

这使用代号作为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 

这个?

 Sub Sample() Dim wks As Worksheet Set wks = Sheet16 With wks Debug.Print .Name '~~> Do what you want End With End Sub 

谢谢加里的学生。 我把你的function变成了以下内容:

 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