2014-01-10 69 views
0
Private Sub Worksheet_Activate() 
ActiveSheet.Protect "RS" 
ActiveSheet.Range("B:C").Locked = False 
End Sub 

我想上面的代碼,但沒有工作,我想解開只有B和C柱解鎖列

+0

什麼是上面代碼的效果? 「不工作」不是一個非常明確的描述。沒有任何鎖定?沒有解鎖嗎? – Floris

回答

4

您保護的是你片解鎖範圍之前。但由於工作表受到保護,因此範圍無法解鎖。交換兩個行和代碼將工作:

Private Sub Worksheet_Activate() 
ActiveSheet.Range("B:C").Locked = False ' unlock the cells, so they can be edited in a protected sheet 
ActiveSheet.Protect "RS" ' protect the sheet so only unlocked cells can be edited 
End Sub 
+0

感謝它的工作 –

+0

發生運行時錯誤,在選擇頁面時「啓用設置範圍類的鎖定屬性」 –

+1

嗯,第一次運行代碼時,它會鎖定工作表。您已選擇將代碼放入Worksheet Activate模塊。因此,下次工作表被激活時(請記住,它已經被保護),代碼嘗試解鎖一些單元格,這將失敗,因爲工作表受到保護。簡而言之:在開始編碼之前,您需要理清代碼邏輯。不要只是放入代碼,然後看看會發生什麼。先制定計劃。它通常有幫助。 – teylyn

0
Private Sub Workbook_Activate() 

Worksheets("ObjectDescriptionMapping").Range("B:C").Locked = False ' unlock the cells, so they can be edited in a protected sheet 
Worksheets("ObjectDescriptionMapping").Protect "RS" 

End Sub 
+0

通過在Workbook_Activate事件中添加代碼 –