2017-07-18 6 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 

をしかし、あなただけの1つのワークシートを持っている場合、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 Editorにあります。デフォルトでは

彼らはなどの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

これは、ユーザーによる変更からコードを保護する最も安全な方法です –

関連する問題