使用VBA锁定和解锁

时间:2016-05-27 16:25:48

标签: excel-vba locking range vba excel

我有一个零件查找文件,它从零件编号返回位置。我也有这个文件创建一个基于位置的上传文件,因为某些位置指向计算机化的存储系统,我能够上传。

我的问题是列A是部件号,B是控件,当部件位于计算机化位置并且被隐藏时,它提供“1”。列C打开进行计数。由于C列不是计算机化系统之外的部分所必需的,我试图创建一个VBA代码,当B列为空时将锁定,当值为“1时解锁“

我一直在尝试的代码是:

Private Sub Worksheet_Change(ByVal Target As Range)

 awk '{ for(i=1;i<=NF;i++) if ($i == "'content:'") print $(i+1) }' testfile.txt

End Sub

我想知道当我点击进入光标时,如果部件在计算机化系统中,则光标进入计数列C,如果不是,则转到下一行。

1 个答案:

答案 0 :(得分:1)

请考虑使用UserInterfaceOnly参数,而不是解锁和锁定。这将锁定用户界面,以便用户无法与工作表交互,但允许任何宏代码运行而无需解锁工作表。

最简单的方法是在Workbook_Open()事件中运行一个循环来锁定每个工作表:

Private Sub Workbook_Open()
    For Each ws In ThisWorkbook.Sheets
        ws.Protect Password:="your password here", UserInterfaceOnly:=True
    Next
End Sub