簡體   English   中英

鎖定/解鎖單元VBA

[英]Lock/unlock cells VBA

我一直在尋找一種代碼來鎖定工作表中的所有單元格,但是一個卻發現了以下代碼:

Worksheets("SW").Range("D2").Locked = False
Worksheets("SW").Protect UserInterfaceOnly:=True

在我保存它並再次關閉/打開文件之前,它確實運行良好,然后運行了我所有的宏。

我猜是因為在該工作表中我有不同的宏,而且我還有在更改單元格時運行的宏:

Private Sub Worksheet_Change(ByVal Target As Range)

您有任何想法如何使其工作嗎?

再說一遍,這個工作簿將被共享,所以我不知道這會影響宏。

對不起,也許我太模棱兩可了。

是的,我想防止其他人更改單元格的值。

我希望只更改一個單元格,以便所有其他單元格都隨着宏而更改。

再次感謝你的幫助

PS:是的,艾哈邁德·穆塔瓦(Ahmad Al-Mutawa),即使在保存,關閉和打開項目之后,我也希望無法更改工作表。

如果您需要更多信息,請告訴我,我將嘗試更加具體。

您的文件中是否有任何宏在執行您嘗試實現的此鎖定解鎖代碼以外的其他操作?

如果是這樣,我建議您在vba中有一個代碼。 否則,您可以簡單地鎖定工作表以防止用戶在沒有代碼的情況下或在任何時間進行任何更改。

您認為這比[code] [1]更好嗎?

[ http://office.microsoft.com/zh-cn/excel-help/lock-or-unlock-specific-areas-of-a-protected-worksheet-HA010096837.aspx ] [1]

出於好奇:您有任何可能不知道在何處以及如何觸發此代碼段的問題?

編輯后的代碼:-您的注釋不清晰,除非我認為您想使用宏。 假設您要保護/鎖定或解鎖/解鎖Sheet1,請嘗試以下操作。 :-

在此工作簿的工作簿打開事件中添加以下代碼:-

Private Sub Workbook_Open()
  Dim shtSheet As Worksheet
  Dim strPassword As String

    strPassword = "stack"
    Set shtSheet = Worksheets("Sheet1")
    shtSheet.Protect Password:=strPassword, UserInterfaceOnly:=True
End Sub

接下來,在您的模塊中添加以下內容。 在運行完宏后調用它。

 Sub ProtectSheet()
  Dim shtSheet As Worksheet
  Dim strPassword As String

     strPassword = "stack"
     Set shtSheet = Worksheets("Sheet1")
     shtSheet.Protect strPassword
 End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM