2016-04-11 98 views
0

我希望我的宏只锁定第2行中的3个单元格[不允许用户编辑],并且为此我写了下面的函数。在VBA中锁定单元格

Private Sub MasterHeaderLock(wksMaster As Worksheet) 
    wksMaster.Activate 
    ActiveSheet.Unprotect 
    wksMaster.Range(wksMaster.Cells(2, 7), wksMaster.Cells(2, 9)).Locked = True 
    ActiveSheet.Protect 
End Sub 

但是这个过程锁定了整个工作表。请让我知道需要修改的内容。

+2

的纸张被锁定为默认情况下,你需要开始与cells.locked =虚假的或类似的东西 –

+2

耶也许wksMaster.Cells.Lockes =第3行假会做 –

+0

你们都是正确的。你们其中一人可以发表你的评论作为答案。 – refactor

回答

0
Sub Test() 
Call MasterHeaderLock(Worksheets("Sheet1")) 
End Sub 

Private Sub MasterHeaderLock(wksMaster As Worksheet) 
    wksMaster.Cells.Locked = False 
    wksMaster.Unprotect 
    wksMaster.Range(wksMaster.Cells(2, 7), wksMaster.Cells(2, 9)).Locked = True 
    wksMaster.Protect 
End Sub 
+0

您可能想要在第6,8和10行更新您的解决方案!第6行:'wksMaster.Cells.Locked = False'。在第8,10行中,它应该是'wksMaster'而不是'ActiveSheet'。最后,你应该删除'wksMaster.Activate'。这是不必要的。 – Ralph

+0

@Ralph,谢谢你的纠正 –