2016-04-11 99 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,謝謝你的糾正 –