2012-03-13 4 views
0

4 개의 열 (A, B, C, D)이 있습니다. 내 요구 사항은 각 행에서 하나의 셀만 데이터를 받아 들여야하며 나머지 셀은 데이터를 받아 들여서는 안됩니다. 즉 나머지 세 셀은 잠긴 모드 여야합니다.Excel에서 동적으로 셀을 잠그는 중

어떻게하면됩니까?

+0

질문이 명확하지 않습니다. 사용자가 해당 열에서 아무 것도 입력 할 수 없도록 3 열을 잠그려고합니까? – assylias

+0

이 점을 이해하면 그룹의 4 개 셀 중 1 개만 수정할 수 있습니다. 즉 Col C에 값이 있으면 A, B, D를 비워 둡니다. 옳은? – Gaffi

답변

7

당신이 물어 보는 한 가지 방법이 있습니다. (또는 적어도 내가 생각하는 것)

먼저 시트의 모든 셀의 잠금을 해제하십시오. 기본적으로 모두 잠금 상태입니다 (실제로 시트를 보호 할 때까지는 적용되지 않지만). 잠금을 해제해야 시작됩니다. 그렇지 않으면 보호를받는 즉시 아무 데나 데이터를 입력 할 수 없습니다. 시트. (2003 년 : 모든 셀 서식> 셀> 보호> 취소 "잠금"을 선택) 수동으로이 작업을 수행 할 수 있습니다 또는 다음과 같이 사용하여 VBA를 :

Sub UnlockAll() 
    With Sheet1 ' Or whatever sheet you're working on 
     .Unprotect 
     .Cells.Locked = False 
     .Protect 
    End With 
End Sub 

위는 한 번만 실행해야합니다.

그런 다음 Worksheet_Change 이벤트를 사용하여 셀을 동적으로 잠 그거나 잠금 해제해야합니다. 시트 모듈에 다음 코드를 작성하십시오.

Private Sub Worksheet_Change(ByVal Target As Range) 
    Me.Unprotect 
    If Not IsEmpty(Target) Then 
     'Data was added in target cell. Lock its neighbours. 
     Me.Cells(Target.Row, 1).Resize(, 4).Locked = True 
     Target.Locked = False 
    Else 
     'Data was erased from target cell. Release its neighbours. 
     Me.Cells(Target.Row, 1).Resize(, 4).Locked = False 
    End If 
    Me.Protect 
End Sub 

셀 B2에 데이터를 쓰는 경우, 이렇게하면 데이터를 입력 할 수 없도록 셀 B1, B3 및 B4가 잠 깁니다. 나중에 B2 셀을 지우려면 B1, B3 및 B4가 잠금 해제됩니다.

+0

Thanq Jean-François Corbett, –

+0

좋은 답변이지만 다른 열에 대해서도 같은 종류의 동작을 원합니다. 즉 현재 (AD) 열은 해당 동작을가집니다. simillary (MQ)에 대해 동일한 동작이 필요합니다. 동일한 Excel 시트의 열 –

+0

Look, 나는 그 질문에 답했다. 새로운 질문이있는 경우이 대답을 수락하고 새 질문을 올리십시오. 아마도 새로운 질문을 게시하기 전에이 솔루션을 이해하고 A-D뿐 아니라 M-Q 열에서도 사용할 수 있습니다. –

관련 문제