锁定/解锁单元VBA

时间:2012-11-08 09:57:14

标签: excel vba locking

我一直在寻找一个代码来锁定工作表中的所有单元格但是我找到了这个代码:

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

它确实工作正常,直到我保存它并再次关闭/打开文件,然后我运行的任何宏。

我想这是因为在那张表中我有不同的宏,而且我还有一个在更改单元格时运行的宏:

Private Sub Worksheet_Change(ByVal Target As Range)

你知道如何让它发挥作用吗?

还有一件事,这个工作簿会被共享,所以我不知道这会影响宏。

抱歉,也许我太暧昧了。

是的我想阻止他人改变细胞的价值。

我希望只有一个单元格可以更改,所以其他单元格都会随宏更改。

再次感谢您的帮助

PS:是啊Ahmad Al-Mutawa,即使在项目被保存,关闭和打开之后,我也希望无法改变工作表。

如果您需要更多信息,请告诉我,我会尝试更具体。

1 个答案:

答案 0 :(得分:0)

您的文件是否有任何宏执行除您尝试实现的锁定解锁代码之外的其他操作?

如果是这样,我建议您在vba中使用代码。否则,您可以简单地锁定工作表,以防止用户在没有代码的情况下随时更改某些内容。

你认为这对你来说比[代码] [1]更好吗?

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

出于好奇:通过任何机会你有一个问题,不知道在哪里以及如何触发这段代码?

已编辑的代码: - 你的评论不清楚,我认为你不想使用宏。 假设您要保护/锁定或取消保护/解锁Sheet1,请尝试以下操作。 : -

在本工作簿的Workbook open事件中添加此代码: -

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