excel - 错误 1004,“范围”上的方法“锁定”失败:VBA if cell1="" Then cell2=x
问题描述
我正在创建应该从一个范围内获取值的宏,如果为空,则将单元格锁定在另一个范围内。我仍然收到错误 1004,“范围”上的方法“锁定”失败。
Sub function_one()
Dim cell As Range
For Each cell In Range("Table[[Column1]:[Column2]]")
Dim cell2 As Range
For Each cell2 In Range("Table2[[Column1]:[Column2]]")
If cell.Value = "" Then
cell2.Locked = True
End If
Next cell2
Next cell
End Sub
我错过了什么?
解决方案
您无法锁定锁定的单元格。
因此,要么先解锁它以确保,要么先检查它,然后仅在尚未锁定的情况下将其锁定。
要首先解锁,添加一行代码来执行此操作,您的原始代码变为:
Sub function_one()
Dim cell As Range
For Each cell In Range("Table[[Column1]:[Column2]]")
Dim cell2 As Range
For Each cell2 In Range("Table2[[Column1]:[Column2]]")
If cell.Value = "" Then
cell2.Locked = False
cell2.Locked = True
End If
Next cell2
Next cell
End Sub
或者,您可以检查是否已解锁,然后才将其锁定:
Sub function_one()
Dim cell As Range
For Each cell In Range("Table[[Column1]:[Column2]]")
Dim cell2 As Range
For Each cell2 In Range("Table2[[Column1]:[Column2]]")
If cell.Value = "" Then
If cell2.Locked <> True then cell2.Locked = True
End If
Next cell2
Next cell
End Sub
在这两个示例中,您的代码均未进行其他修改。我也会做一些不同的事情,包括Table[[Column1]:[Column2]]
零件、嵌套循环等,但所有这些都可能超出您的问题范围。