2014-09-12 31 views
2

工作表名稱可能會更改。正因爲如此,我想根據工作表的代號來設置工作表對象。我怎樣才能做到這一點?如何根據工作表的代號設置工作表對象?

我最好的嘗試,到目前爲止是:

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

+0

雙引號添加到工作表名稱:WKSNAME = ThisWorkbook.Sheets(「Sheet16」)名稱 – Vikas 2014-09-12 13:03:31

回答

1

這將使用代號爲字符串

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 
4

這種類型不匹配錯誤?

Sub Sample() 
    Dim wks As Worksheet 

    Set wks = Sheet16 

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

謝謝Gary的學生。我midified你的函數如下:

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 
+1

爲什麼你會採取這麼長的路線? – 2014-09-12 13:37:42

相關問題