2014-03-07 2 views
0

나는 이것에 붙어 있습니다.이전 시트의 셀을 수정하십시오.

나는 집으로 만든 세포 잠금 시스템을 만들고있다.
사용자 이 한 시트
에서 다른 시트로 이동할 때이 시스템의 일부가 잠긴 셀 범위를 고정하려고합니다.

해당 범위는 다음과 같습니다 ("A1 : K"& lowerLimit). 일부 시트는 줄 수가 적고 일부는 9000까지 나옵니다.

첫 번째 템플릿 시트를 만든 다음 범위에 이름을 지정하고 마지막으로 해당 시트를 복사했습니다. 그래서 나는 그 특정 범위를 가리키는 문제가 없습니다. 각 시트.

문제는 사용자가 한 시트에서 다른 시트로 이동할 때 자동으로 이전 시트의 잠금 범위를 지정하려는 것입니다. 나는 끝없는 사이클을 이끌어내는 솔루션을 찾으러 갔다. ActiveSheet와 이전 트랙의 추적을 따르는 두 가지 변종이었다. Private Sub Workbook_SheetActivate(ByVal Sh As Object)으로 트리거했다. 이전 시트가 활성 시트가되어 계속 진행되기 때문에 작동하지 않습니다.

ActiveSheet가 변경된 후에 Private Sub Workbook_SheetDeActivate(ByVal Sh As Object)이 트리거되거나 이상하지 않은 경우가 있습니다.

시트의 잠금을 해제하고 셀을 잠근 다음 시트를 다시 고정시키는 방법이 있습니까? 해당 시트를 활성화하지 않고 특정 시트 (마지막 활성 시트가 ​​될 수 있음)?

불가능하다면 내 엉성한 방법을 해결할 방법이 있다고 생각합니까?

감사합니다.

+0

이벤트의 시작에서'Application.EnableEvents = False'를 사용하고 이벤트 코드의 끝과'Application.EnableEvents = True'를 사용하십시오 –

답변

0

활성화 시트는 비활성화 이벤트 전에 변경됩니다. 나에게도 의미가 없습니다.

하지만 시트의 activate 이벤트 또는 deactivate 이벤트를 사용하십시오. 활성화가 발생하기 전에 비활성화가 발생합니다.

전역 변수를 가지고 있고, 현재 저장된 활성 시트를 취하고, 그 이전하고 새로운 활성 시트 풋 activesheet.name에서 만드는 비활성화 각 시트에 코드를 삽입 (또는 활성화) :

Private Sub Worksheet_Deactivate() 
    Previoussheet = gActiveSheet 'currently held gactivesheet variable represents the previously active sheet (as it hasnt been changed yet. 
    gActivesheet = Activesheet.name 'save the currently active sheet in active sheet 

End Sub 

그리고 이전 및 현재 활성화 된 시트를 정확하게 비교할 수 있으며 필요에 따라 잠 그거나 잠금 해제 할 수 있습니다.

관련 문제