1

Excel2010で助けを得たいと思っています。

目に見えるシートが3枚あります。Workbook Openでは、vbaパスワードが3枚のシートのそれぞれを保護します。

これで、任意のシートのロックされていないセルに変更を加えるたびに、4つの保護されたシート警告ポップアップが表示されます。セルがロックされており、編集するには保護を解除する必要があるというものですか?ロックされたセルを編集していないことを除けば、これで問題ありません。他のシートのロック解除されたセルを編集しています!

誰かがこの経験をしたことがありますか?私は遊んだことがありますが、そのうちの2つは2枚のシートのそれぞれに起因する可能性があります。つまり、最初のシートだけを保護するとポップアップが表示されず、2番目のシートだけを保護すると2が表示され、3番目のシートだけを保護すると2が表示されます。

数式を取り出しても違いはありません。

ロックのコードは次のとおりです。

For Each wSheet In Worksheets

    wSheet.Unprotect Password:="JMP_DST_Lock"

    If wSheet.Visible = True Then
        wSheet.Protect Password:="JMP_DST_Lock", UserInterFaceOnly:=True
        wSheet.EnableOutlining = True
    End If

Next wSheet

ThisWorkbook.Protect Password:="JMP_DST_Lock"

助けてくれてありがとう。

編集:コンボボックスがエラーの理由であることが判明しました。リンクされたセルがロックされている場合、シートが計算するときはいつでも(自動計算時の変更)、警告が発生します。今、私は各コ​​ンボボックスGotFocusのシートの保護を解除するコードを持っていますが、それを除けば、これらは増えています。

妥協点はありますか?これらの警告が表示されることなく、リンクされたセルをロックしたままにする方法はありますか?選択を除いて、コンボボックスがリンクされたセルにヒットしていることを確認する方法はありますか?

ありがとうございました!

4

1 に答える 1

1

あなたの論理は間違っているようです。シートの保護を解除し、表示されているシートを保護してから、ブック全体を保護します(最後のコード行)。

代わりに次のようなものを試してください(テストされていません):

For Each wSheet In Worksheets
  If wSheet.Visible = True Then
    wSheet.Protect Password:="JMP_DST_Lock", UserInterFaceOnly:=True
    wSheet.EnableOutlining = True
  End If
Next wSheet

ブックが保護された状態でシートとともに保存されている場合は、代わりに次のように変更します。

For Each wSheet In Worksheets
  If wSheet.Visible = False Then
    wSheet.UnProtect Password:="JMP_DST_Lock"
  End If
Next wSheet
于 2012-09-28T22:21:01.230 に答える