我对VBA一无所知,但我在网站上找到了以下代码,并在工作簿中使用它。
Private Sub Workbook_Open()
With Worksheets("WFD")
.EnableOutlining = True
.Protect Password:="XXXX", _
Contents:=True, UserInterfaceOnly:=True
End With
End Sub
我应该如何修改这个,以便如果工作表名称从" WFD"除了别的什么,代码仍然有效?此外,我希望它适用于工作簿中的所有工作表。
非常感谢
答案 0 :(得分: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 :(得分:1)
您应该使用Sheet Object Codename。 这可以在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
答案 2 :(得分: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)
将始终有效。