锁定特定单元格vba

时间:2015-04-28 09:13:41

标签: excel excel-vba excel-formula vba

我有一个被编辑锁定的excel文件,除D列以外的所有列都被锁定。每当使用宏时,列都会被解锁并锁定。现在我想锁定D列中的一些特定单元格而不锁定整个列。

标准是如果列A包含单词" orange"那么D列中的同一行应该被锁定。如果没有,它将保持解锁状态。

有这么快的方法吗?

2 个答案:

答案 0 :(得分:0)

两种最快的方法是 For i = 1 To LastRow 循环和 rng.Find 方法。
按照惯例:避免选择方法,它在我们的情况下什么也不做,但显着减慢了过程 您可能还想广泛使用更改工作表事件,因为重新定义整个工作表的属性比重新定义最近更改的单元格要花费更多的时间。相关范围'。

答案 1 :(得分:0)

以下代码应该有帮助

Sub lockIT()
Dim wb As Workbook
Dim ws As Worksheet
Dim lastRow As Long
Dim willLockCol As String
Dim searchSTR As String

Set wb = ActiveWorkbook
Set ws = wb.Sheets("WillLock")
willLockCol = "A" '<---- Which column you want to search cells to lock
searchSTR = "orange" '<---- Content to lock
lastRow = ws.Range(willLockCol & Rows.Count).End(xlUp).Row

ws.Cells.Locked = False
For i = 1 To lastRow
    If ws.Range(willLockCol & i).Value = searchSTR Then
        ws.Range(willLockCol & i).Locked = True
    End If
Next
End Sub