locking/解锁单元格VBA

我一直在寻找一个代码来locking工作表中的所有单元格,但是我发现这个代码:

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

它真的很好,直到我保存它,再次closures/打开文件,然后我运行的任何macros。

我想这是因为在该表中,我有不同的macros,我也有macros单元格更改时运行:

 Private Sub Worksheet_Change(ByVal Target As Range) 

你有什么想法如何使其工作?

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

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

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

我想只有一个单元格可以改变,所以其他所有的单元格都随着macros而改变。

再次感谢你的帮助

PS:是的艾哈迈德·穆塔瓦(Ahmad Al-Mutawa),即使在项目被保存,closures和打开后,我也不可能改变这张纸。

如果你需要更多的信息只是告诉我,我会尽量做到更具体。

您的文件是否有任何其他操作的macros,而不是您想要实现的这个锁解锁代码?

如果是这样,我build议你在vba中有一个代码。 否则,您可以简单地locking工作表,以防止用户在没有代码的情况下随时改变某些事物。

你认为这可能比[代码] [1]更好吗?

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

出于好奇:任何机会你有一个问题不知道在哪里和如何触发这个代码块?

编辑的代码: –您的评论不清楚,无可指责,我相信你想使用一个macros。 假设您想要保护/locking或取消保护Sheet1,请尝试以下操作。 : –

在此工作簿的Workbook open event中添加以下代码: –

 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 

接下来在模块中添加以下内容。 并在完成运行macros后调用它。

  Sub ProtectSheet() Dim shtSheet As Worksheet Dim strPassword As String strPassword = "stack" Set shtSheet = Worksheets("Sheet1") shtSheet.Protect strPassword End Sub