2017-04-20 5 views
0

기본적으로 B1 < 0, B2 : B7 = 0 및 B2 : B7이 비어있는 경우 B2 : B7을 잠글 수 있어야합니다.0과 빈 셀 미만의 셀을 잠글 수 있습니다. Excel

이것은 내가 지금까지 가지고있는 것입니다.

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 

답변

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 
+0

도움을 많이 주셔서 감사합니다. 작동하지만 약간 문제가 있다고 생각합니다. 그 날주는 런타임 오류 '91': 개체 변수 또는 With 블록 변수가 설정되어 있지 않은 및 내가 그것을 디버깅 할 때 하이라이트 rRng.Locked = False – sa7

+0

잠금을 해제해야 할 모든 셀 있습니까? rRng가 비어 있으면 오류가 발생할 수 있습니다. 또한 나는 나의 초기 범위가 당신과 다르다는 것을 알아 차렸다. – gtwebb