![워크시트를 보호하지 않고 특정 셀의 내용을 보호합니다.](https://rvso.com/image/1497075/%EC%9B%8C%ED%81%AC%EC%8B%9C%ED%8A%B8%EB%A5%BC%20%EB%B3%B4%ED%98%B8%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%ED%8A%B9%EC%A0%95%20%EC%85%80%EC%9D%98%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EB%B3%B4%ED%98%B8%ED%95%A9%EB%8B%88%EB%8B%A4..png)
여러 탭이 있는 Excel 2016 통합 문서가 있는데, 각 탭은 특정 영업 사원 전용입니다. 각 영업사원은 양식에서 로그인하고 그의(그의) 워크시트는 잠금 해제되어 편집이 가능합니다.
그의 과거 데이터를 보여주는 테이블이 있습니다. 그는 테이블에 있는 대부분의 데이터를 업데이트하거나 변경할 수 있습니다. 그는 특정 셀을 업데이트하고 저장한 다음 통합 문서를 닫습니다. WB 폐쇄 과정에서 그의 시트가 다시 잠깁니다. 떠나기 전에 그는 다른 영업 사원 시트를 볼 수 있지만 잠겨 있기 때문에 편집할 수는 없습니다.
이제 문지르세요. 각 Salespeeps 시트의 특정 열(모든 Peeps에 대해 동일)에는 관리자가 입력한 데이터가 포함되어 있습니다. 이 데이터는 영업 담당자가 확인해야 하지만 변경해서는 안 됩니다.
보호되지 않은 워크시트의 기존 콘텐츠 변경으로부터 특정 열을 보호하는 방법에 대한 생각입니다.
답변1
VBA 코드를 보지 않고는 잠금/잠금 해제가 어떻게 발생하는지 판단하기 어렵습니다. 셀 속성을 설정 locked
하고 워크시트 보호 및 보호 해제 기능을 사용하면 완료된다고 가정합니다.
당신이 해야 할 일은 편집이 허용된 모든 판매를 선택하고 이에 대한 사용자 정의 범위를 만드는 것입니다. 편리한 Excel이 없지만 Data
> Define Custom Range
동일한 위치에서 범위를 선택하면 Excel에서 셀이 자동으로 선택됩니다.
사용자 정의 범위로 작업하는 대신 관리 데이터가 동일한 열에 없는 경우 필요한 열을 선택할 수 있습니다. 그것은 activesheet.range("K:L").select
가능하게 할 것입니다.
VBA 코드에서는 워크시트 잠금을 해제한 후 이 범위를 선택하고 locked
해당 셀의 설정을 변경한 다음 시트를 다시 보호해야 합니다. 종료 시 반대 작업을 수행해야 합니다(보호 해제, 모든 잠금 설정, 보호).
적절한 VBA 코드를 찾으려면 매크로에 기록하는 동안 수동으로 작업을 수행하고 코드를 복사하세요.
답변2
LPChip은 저를 올바른 길로 인도해 주었고 정말 감사드립니다. 제가 사용한 프로세스는 다음과 같습니다.
- 영업사원 시트에서 전체 시트에 대한 잠금 속성을 false로 설정합니다.
- 해당 영업 사원의 테이블에서 전체 테이블의 잠금 속성을 true로 설정합니다.
- 우리는 LPChip이 제안한 대로 누구도 편집할 수 없도록 모든 열에 대해 사용자 정의 범위를 만들었습니다. 이 작업을 수동으로 수행하고 범위 이름(LockedColumns)을 할당했습니다.
그런 다음 시트를 보호합니다. 이는 이 시트와 다른 모든 판매 관음 시트의 시작 조건입니다.
영업 사원이 로그온하고 올바른 자격 증명을 사용하면 장면 뒤의 VBA 코드에서 다음이 발생하는 시트로 이동됩니다.
- 테이블을 선택하고 잠금 속성을 false로 설정합니다.
- Range.("LockedColumns").select를 선택하고 잠금 속성을 true로 설정합니다.
- 우리는 워크시트를 보호합니다.
이를 통해 승인된 영업 담당자가 허용된 셀에 데이터를 입력할 수 있으며 변경을 원하지 않는 셀의 데이터를 변경하는 것을 방지할 수 있습니다. 영업 담당자는 다른 영업 탭을 볼 수 있지만 수정할 수는 없습니다. 영업 담당자가 로그오프하거나 통합 문서가 닫히면 닫기 전과 VBA 코드로 캡처합니다. 1. 전체 테이블을 다시 선택하고 잠금 속성을 true로 설정한 다음 워크시트를 보호합니다. 저장한 후 다음 사용자를 위해 메뉴 탭으로 다시 리디렉션됩니다.
나는 당황했고 LP가 눈을 떴다. 다시 한번 감사드립니다.