2017-10-13 4 views
0

매크로가 있습니다. 현재 작업 중입니다.엑셀 VBA의 특정 셀 잠그기

목적 일단 L 열에 값이있는 경우, 난 계시 열에있는 셀을 잠글 필요가 있습니다. 그러나 이것은 전체 워크 시트를 잠그지 않아야합니다.

코드 다음은 내가 사용한 코드입니다. 위의 목적을 달성 할 수 있도록 코드를 수정하려고합니다.

이유 이유 못해 전체 시트 잠금 칼럼 L의 기간이있는 경우 고정한다

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Target.Row = 1 Then 
     If Target.Column = 3 Or Target.Column = 5 Then 
      Beep 
      Cells(Target.Row, Target.Column).Offset(0, 1).Select 
     End If 
    End If 
End Sub 

enter image description here

세포, 황색에 추가 사용자가 워크 시트에 자신의 데이터를 입력 할 수 없기 때문에 문제를 극복 할 수 있습니다.

답변

2

시트를 보호하는 경우에만 셀을 잠그면 아무 효과가 없습니다. 첫째, 시트에있는 모든 세포의 잠금을 해제 한 다음이 시도 :

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column <> 12 Or Target.Row = 1 Then Exit Sub 

    Range(Cells(Target.Row, 2), Cells(Target.Row, 11)).Locked = True 
    ActiveSheet.Protect 
End Sub 
+0

감사합니다.하지만 워크 시트를 잠급니다. 다른 데이터를 Excel 워크 시트에 입력 할 수 없음을 의미합니다. – James

+0

@James, 이것을 실행하기 전에 워크 시트의 모든 셀을 잠금 해제 했습니까? – Mahesh

1

변경 실제 암호 코드의 첫 번째 줄에 암호 시트 보호를 해제 할 수 있습니다.

Const PW As String = "123" 

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.CountLarge > 1 Then Exit Sub 
Dim r As Long 
If Target.Column = 12 And Target.Row > 1 Then 
    ActiveSheet.Unprotect Password:=PW 
    r = Target.Row 
    If Target <> "" Then 
     Range("B" & r & ":K" & r).Locked = True 
    Else 
     Range("B" & r & ":K" & r).Locked = False 
    End If 
    ActiveSheet.Protect Password:=PW 
End If 
End Sub