2017-10-16 1 views
0

VBA 편집기의 Tools -> References 메뉴를 통해 B (B.xlsm) 통합 문서를 참조하는 통합 문서 A (A.xlsm)이 있습니다. AB에 여러 매크로를 사용합니다. A을 닫으면 B은 열린 상태로 유지되고 모든 변수는 현재 상태를 유지합니다. 따라서 A을 다시 열면 B에있는 일부 매크로는 더 이상 A과 호환되지 않는 이전 주문의 상태를 갖고 있기 때문에 오류가 발생합니다.참조 된 통합 문서 변수를 다시 설정하는 방법

B을 재설정하여 모든 변수가 원래 상태가되도록 할 수 있습니까? A이 닫힌 후에 B을 닫는 방법이 있습니까?

+1

정상적으로 변수를 닫거나 다시 설정할 필요가 없습니다. VBA 변수의 범위가 일반적으로 다소 낮기 때문에 변수 (일반적으로)는 사용/생성되는 프로 시저 또는 함수로 생존하고 죽습니다. https://www.ozgrid.com/VBA/variable- scope-lifetime.htm 그러나 더 넓은 범위의 변수를 만들려면'Set ws1 = Nothing' 또는'strVariable = vbNullString' 또는'lngRowCount = 0' 또는' Set adoRecordSet.Close' 그리고 나서'Set adoRecordSet = Nothing' .... – Ralph

+0

@Ralph 제 경우에는 모듈 변수입니다 – Roland

답변

1

변수를 재설정하려면 참조 통합 문서 B에 CleanUp-Sub를 작성하고 A에서 호출하는 것이 좋습니다.

A이 닫힌 경우 B 통합 문서를 닫으려면 해킹이 필요합니다. close Workbooks("B.xlsx") 같은 것을 단순히 발급 할 수는 없으므로 오류가 발생합니다 (1004 - 통합 문서가 다른 통합 문서 ...에 의해 참조 됨).

데이비드 데너 (David Demner)가 여기 제안한 트릭을보십시오. https://stackoverflow.com/a/18132384/7599798. 아이디어는 참조 통합 문서에서 닫기 루틴이 트리거되지만 close은 즉시 실행되지 않습니다. 통합 문서가 닫히면 Close (B)이 호출 통합 문서 (A)의 닫기가 완료된 후에 만 ​​실행됩니다.

관련 문제