我得到您的問題的第一部分。你需要指定一個密碼參數作爲工作表的Protect
方法的一部分:
Sub lockSheet()
With ActiveSheet
'Check sheet is not already protected
If Not .ProtectContents Then
'Clear any existing lock settings
.Cells.Locked = False
.Range("A1:D23").Locked = True
.Protect Contents:=True, Password:="pw"
End If
End With
End Sub
請注意,這是沒有必要的修改之前選擇一個範圍,只需直接套用行動的範圍。
密碼顯然是明文可見的,如果您需要保護到任何程度,那麼您還需要apply a password to the VBA project。
爲了解決你問題的第二部分,修正您的評論:
Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Locked Then
With ActiveSheet
.Unprotect
If Not .ProtectContents Then
target.Locked = False
.Protect Contents:=True, Password:="pw"
End If
End With
End If
End Sub
這將需要添加到工作表模塊。
感謝您解決第一部分。第二部分,我想要做的是如下。 我有一些只讀的單元格。當用戶點擊取消保護表並輸入正確的密碼時,他將能夠編輯它。 無論他選擇哪個單元格進行編輯,我都想在他的單元格周圍動態地提供一個按鈕來更新這些更改。 這就像A1有100,B1有200,C1有300. 當他將A1更改爲200時,在我創建的動態按鈕上,C1應該變爲400.是否清楚。 – gizgok 2010-08-25 12:30:54
仍然不完全瞭解您的要求,但如果您提出單獨的問題而不是在此討論它,則會更好。 – Lunatik 2010-08-25 12:59:38
Chuck第二個問題....告訴我,如果你可以,我怎麼能解除只保護我選擇的細胞.. – gizgok 2010-08-25 13:05:58