1

我一直在寻找一种代码来锁定一张表中的所有单元格,但是我发现了这个代码:

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

在我保存它并再次关闭/打开文件之前,它确实工作得很好,然后运行了我拥有的任何宏。

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

Private Sub Worksheet_Change(ByVal Target As Range)

你知道如何让它工作吗?

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

对不起,也许我太模棱两可了。

是的,我想阻止其他人更改单元格的值。

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

再次感谢你的帮助

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

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

4

1 回答 1

0

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

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

你认为这对你来说可能比 [code][1] 更好吗?

[ http://office.microsoft.com/en-us/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
于 2012-11-08T11:34:11.983 回答