2013-06-14 2 views
1

나는 응용 프로그램과 같은 역할을하는 Excel 워크 시트를 가지고 있으며 사용자가 레코드를 '탐색'할 수있는 폼 컨트롤 단추가 있습니다. First, Previous, Next & 워크 시트 레코드 중 하나를 통해 마지막으로 적절하게 내 '폼'워크 시트에 값을 표시합니다.VBA에서 Excel 셀을 잠그는 방법?

사용자가 편집 모드 나 추가 모드에 있지 않을 때 사용자가 내용을 수정하지 못하도록 셀을 잠그고 싶습니다.

Locked = True이지만 여전히 셀에 새 값을 입력 할 수 있습니다. "A1 : O24"

누구든지이 작업을 수행하는 방법을 알고 있습니까? 사용자가 '탐색'할 때 새 값을 셀에 할당 할 수 있도록하려면 vba 코드가 필요하지만 추가 또는 편집 모드가 아니면 사용자가 새 값을 입력하지 못하도록합니다.

+0

당신이 본 [이] (http://stackoverflow.com/questions/16684297/hiding-formulas-in-formula-bar/16686868#16686868)? theres는 "ws.Protect userinterfaceonly : = True'를 주석 처리했으며 VBA 솔루션에서는 사용자 인터페이스를 거의 잠그고 여전히 VBA 서브 시스템의 셀을 편집 할 수 있습니다. –

+0

@mehow : 경고의 작은 단어 - 'UserInterfaceOnly' 속성이 파일과 함께 저장되지 않았습니다! 따라서 Open 이벤트를 사용하여 속성을 다시 설정하지 않는 한 파일을 열 때 모든 매크로가 문제가됩니다! –

답변

5

저는 실제로 셀이 잠기기 전에 워크 시트를 보호해야한다고 생각합니다. 모든 셀은 기본적으로 잠김으로 형식이 지정되므로 실제로 원하는 작업은 Range()로 고정하지 않으려는 범위를 설정하는 것입니다. Locked = False로 설정하고 워크 시트를 protected로 설정합니다. 모든 세포는 보호 마지막으로 사용자가 편집 아니 었는지 당신의 상태에 대한 보호

+0

.Protect로 지금 당신이 말하는 것을 봅니다. 그러나 내 상황에서는 작동하지 않는 것 같습니다 :/셀을 보호 (또는 "잠금")하면 사용자가 레코드를 순환하면서 셀 값을 변경하지 못합니다. Add/Edit에서 사용자가 셀 값을 수정하지 못하게해야하지만 양식 컨트롤 단추를 클릭하고 해당 이벤트를 실행할 때 코드에서 값을 변경할 수 있어야합니다. –

+1

worksheet.Protect (userInterfaceOnly : = true)를 사용해야합니다. –

2

검색에 워크 시트를 설정 할 또는 모드를 추가 한 다음 범위를 고정하고있는 모든 고정 할 경우

당신의 워크 시트. 이미 보호 된 시트는 다음 코드 아래의 사항을 지켜 경우

Worksheets("Enter your sheet name").Range("A1:I50").Locked = True 
ActiveSheet.Protect Password:="Enter your Password" 

다른 경우 :

당신이 다음 아래 I50하는 범위 A1에서 잠긴 셀을 원하는 경우의가, 하나의 경우 예를 들어 가정 해 봅시다 코드입니다 :

ActiveSheet.Unprotect Password:="Enter your Password" 
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True 
ActiveSheet.Protect Password:="Enter your Password"