2010-06-14 58 views

回答

3

尝试使用Worksheet.Protect方法,像这样:

Sub ProtectActiveSheet() 
    Dim ws As Worksheet 
    Set ws = ActiveSheet 
    ws.Protect DrawingObjects:=True, Contents:=True, _ 
     Scenarios:=True, Password="SamplePassword" 
End Sub 

你应该,但是,关心包括在你的VBA代码的密码。如果你只是试图建立一个简单的屏障,以防止用户发生像删除公式这样的小​​错误,你不一定需要密码。

另外,如果你想看看如何做某些事情在Excel中的VBA中,尝试录制一个宏并查看它生成的代码。这是开始使用VBA的好方法。

21

你可以先选择你不想被他们的锁定状态设置为false来保护(是用户可编辑),该细胞:

Worksheets("Sheet1").Range("B2:C3").Locked = False 

然后,您可以保护工作表,所有其他细胞将受到保护。 的代码要做到这一点,而且还让你的VBA代码修改的细胞是:

Worksheets("Sheet1").Protect UserInterfaceOnly:=True 

Call Worksheets("Sheet1").Protect(UserInterfaceOnly:=True) 
+1

您可能还想要广告d密码,否则只需点击“取消保护工作表”即可对先前锁定的单元格进行编辑,这是一件小事。 – Jonathan 2014-02-19 05:53:14

+0

工作表上面的行(“Sheet1”)。Protect(UserInterfaceOnly:= True)应该是Worksheets(“Sheet1”)。保护UserInterfaceOnly:= True,即没有括号 – dinotom 2016-05-23 19:21:03

+0

@dinotom,看编辑历史和编辑的人这就解释了为什么 – 2016-05-23 22:40:03

0
Sub LockCells() 

Range("A1:A1").Select 

Selection.Locked = True 

Selection.FormulaHidden = False 

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= False, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True 

End Sub 
0

你也可以做到在工作表的捕获的工作水平改变事件。如果你的需求更符合你的需求。允许基于价值观,标准,ECT动态锁定...

Private Sub Worksheet_Change(ByVal Target As Range) 

    'set your criteria here 
    If Target.Column = 1 Then 

     'must disable events if you change the sheet as it will 
     'continually trigger the change event 
     Application.EnableEvents = False 
     Application.Undo 
     Application.EnableEvents = True 

     MsgBox "You cannot do that!" 
    End If 
End Sub 
2

比方说,例如,在一种情况下,如果从范围A1要锁定的细胞然后在下面I50是代码:

Worksheets("Enter your sheet name").Range("A1:I50").Locked = True 
ActiveSheet.Protect Password:="Enter your Password" 

在另一种情况下,如果你已经有了那么保护工作表按照以下代码:

ActiveSheet.Unprotect Password:="Enter your Password" 
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True 
ActiveSheet.Protect Password:="Enter your Password" 
相关问题