使VBA适用于重命名选项卡和工作簿中的所有选项卡

我对VBA的了解不多,但是我在网站上find了下面的代码,并在工作簿中使用它。

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

我应该如何修改这个,以便如果工作表名称从“WFD”更改为其他内容,代码仍然有效? 另外,我希望它适用于工作簿中的所有工作表。

非常感谢

如果您想为每个工作表使用此代码,请使用以下代码:

 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 

你应该使用图表对象代号。 这可以在VB项目中的工作表对象旁边的VB编辑器中find。

默认情况下,它们是Sheet1,Sheet2等。您可以轻松地通过点击和input新名称来更改它们。

你当然可以把它们作为默认的codeName,如果你喜欢…这不同于工作表的名称,这是由用户在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 

您可以编写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)将始终工作。