2010-08-25 53 views
0

我已經使用這行代碼鎖定了電子表格中的單元格。如何設置密碼,當有人在Excel中點擊不保護表格並創建一個編輯按鈕

Range("A1:D23").Select 
Selection.Locked = True 
ActiveSheet.Protect Contents:=True 

這促使我每當我點擊一個細胞,其是隻讀不保護從審覈選項卡並可能會提示輸入密碼。

我的問題是,它不提示輸入密碼。當他想要解除保護時,我如何首先設置密碼。其次,我想傳遞他選擇要更改的行信息,並且希望在毗鄰只讀時創建按鈕單元格用於編輯。

回答

1

我得到您的問題的第一部分。你需要指定一個密碼參數作爲工作表的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 

這將需要添加到工作表模塊。

+0

感謝您解決第一部分。第二部分,我想要做的是如下。 我有一些只讀的單元格。當用戶點擊取消保護表並輸入正確的密碼時,他將能夠編輯它。 無論他選擇哪個單元格進行編輯,我都想在他的單元格周圍動態地提供一個按鈕來更新這些更改。 這就像A1有100,B1有200,C1有300. 當他將A1更改爲200時,在我創建的動態按鈕上,C1應該變爲400.是否清楚。 – gizgok 2010-08-25 12:30:54

+0

仍然不完全瞭解您的要求,但如果您提出單獨的問題而不是在此討論它,則會更好。 – Lunatik 2010-08-25 12:59:38

+0

Chuck第二個問題....告訴我,如果你可以,我怎麼能解除只保護我選擇的細胞.. – gizgok 2010-08-25 13:05:58

相關問題