2017-11-24 17 views
-1

私はスプレッドシートを取得し、すべてのシートを隠して保護するマクロを持っています。隠れている部分は完全に動作しています。しかし、保護部分はありません。私のコードは以下の通りです:シートの保護と隠蔽

Dim sh As Worksheet 

    For Each sh In Worksheets 

    If sh.Name <> "Simulador" Then sh.Visible = xlSheetHidden 
    sh.Protect Password:="123" 

    Next 

どこが間違っているかも知れませんか?

+1

歓迎:

は以下のページを参照してください。私は他の人があなたがすでに答えを探してみたことを知っていることに興味があると思います。これまで部分的に助けてきたリンクを追加することができます。他の人があなたが解決策を見つけるために努力したことを知っていることがあります。マイクロソフトの文書化は困難な場合もありますが、それがこの場合の答えです。 – Grantly

+1

Googleの最初のリンク... https://analysistabs.com/excel-vba/protect-unprotect-worksheets/パラメータ値が不足している可能性があります – Grantly

+2

'しかし保護部分はありません。うまくいきませんか?あなたが得ているエラー、つまりあなたが1つを取得している場合...それは私のために働く、すなわちそれはシートを保護します –

答えて

1

は隠しシートを非表示解除からユーザーを防ぐために、あなたが必要としますワークブックの構造に

を保護するために、これを試してみてください:

Sub TEST() 
     With ThisWorkbook 
      .Sheets("Simulador").Visible = xlSheetVeryHidden 
      .Protect Password:="PassKey", Structure:=True 
     End With 
     End Sub 

のみをまだ使用して元に戻すことができxlSheetVeryHiddenにシートの可視性を設定しますvba。 StackOverflowのに
Workbook.Protect Method (Excel)

1

あなたのコードは、右クリックしてシートを隠すのに相当します。これは、再度右クリックして元に戻すと元に戻すことができます。代わりに、あなたが使用することができます。

Dim sh As Worksheet 

    For Each sh In Worksheets 

    If sh.Name <> "Simulador" Then sh.Visible = xlVeryHidden 
    sh.Protect Password:="123" 

    Next 

VeryHiddenシートを元に戻すために心に留めてください、あなたはVBAでそれを行う必要があります:sh.Visible = True