2017-07-18 74 views
1

對於VBA我並不十分了解,但我在網站上找到了下面的代碼,並在工作簿中使用它。使VBA適用於重命名選項卡和工作簿中的所有選項卡

Private Sub Workbook_Open() 
With Worksheets("WFD") 
.EnableOutlining = True 
.Protect Password:="XXXX", _ 
Contents:=True, UserInterfaceOnly:=True 
End With 
End Sub 

我應該如何修改這個,這樣,如果工作表名稱從「WFD」改爲別的東西,該代碼仍然有效?另外,我希望它適用於工作簿中的所有工作表。

非常感謝

回答

0

你可以寫Worksheets(1)Worksheets(5),根據工作表的數量。但是,如果您開始添加和刪除工作表,它將不起作用(例如,它將在其他工作表上工作)。然而

Option Explicit 

Public Sub TestMe() 

    Dim ws As Worksheet 
    Dim cnt As Long 

    For cnt = 1 To ThisWorkbook.Worksheets.Count 
     Debug.Print cnt; "-> "; Worksheets(cnt).name 
    Next cnt 

End Sub 

,如果你只有一個工作表,Worksheets(1)總是工作:要查看相關數字到工作表,運行這個檢查即時窗口。

1

如果你想爲下面的每個工作表使用此代碼代碼:

Private Sub Workbook_Open() 
Dim ws As Worksheet 
For Each ws In Worksheets 
    With ws 
    .EnableOutlining = True 
    .Protect Password:="XXXX", _ 
    Contents:=True, UserInterfaceOnly:=True 
    End With 
Next 
End Sub 
1

應使用表對象代號。 這可以在VB項目中的工作表對象旁邊的VB編輯器中找到。

默認情況下,他們是工作表Sheet1,Sheet2的等,您可以通過點擊並輸入新的名稱進行更改等

當然,你可以把它們作爲默認的代號,如果你喜歡... 這不是與工作表名稱相同,在Excel界面的「工作表」選項卡上由用戶更改。

Private Sub Workbook_Open() 
    With WFD 'where WFD is the CODENAME of the Sheet Object! 
     .EnableOutlining = True 
     .Protect Password:="XXXX", _ 
     Contents:=True, UserInterfaceOnly:=True 
    End With 
End Sub 
+0

這是最安全的方式來保護代碼免受用戶所做的更改 –

相關問題