锁定小于零的单元格并清空单元格VBA Excel

时间:2017-04-20 15:59:07

标签: excel vba locking cells

所以基本上我希望能够在B1 <0时锁定B2:B7,当B2:B7 = 0且B2:B7为空时。

这是我到目前为止所做的。

SN:我刚刚开始这样做,所以我对某些事情有点无能为力。

Sub test_lock()

If Range("B1") < 0 And Range("B2:B7") Then
    Range("B2:B7").Locked = True

ElseIf Range("B2:B7") > 0 Then
    Range("B2:B7").Locked = False

End If

For Each rngTemp In Range("B2:B7").Cells
        With rngTemp
            If .Value > 0 Or Len(.Value) > 0 Then
                .Locked = False
            End If
        End With
    Next
End Sub

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样?它锁定了整个范围,然后解锁了所需的内容。

通过构建范围然后立即解锁,如果单元格数量很高,它应该更快。

注意注释掉的行,这只会将未锁定的单元格设置为绿色,以便于检查。

Sub temp()
Dim rCell As Range
Dim inRng As Range
Dim rRng As Range

set myRng = Range("A1:B2")

myRng.Locked = True
For Each rCell In myRng
    If rCell.Value > 0 Then
        If rRng Is Nothing Then
            Set rRng = rCell
        Else
            Set rRng = Application.Union(rRng, rCell)
        End If
        End If
    Next
    rRng.Locked = False
    'rRng.Interior.ColorIndex = 4
End Sub