2013-12-13 5 views
0

워크 시트 중 하나 이상이 customer 인 워크 북이 있습니다. 또한 customer 클래스와 각 고객 오브젝트에 적용 가능한 워크 시트 데이터를로드하는 메소드를 빌드했습니다. 방법은 다음과 같이 작동합니다.워크 시트를 기반으로 개체를로드하는 중

이 모든 것이 효과가 있습니다. 누군가가 동일한 통합 문서 내에서 고객 워크 시트 사본을 만들기로 결정할 때까지. 다음에 통합 문서가 열리고 LoadCustomers() 메서드가 실행되면 중복 된 고객 키가 발견되어 충돌하고 화상을 입습니다.

사람들이 통합 문서에서 시트를 복사하지 못하도록하지 않으면 어떤 좋은 해결책이 될까요? 더 적은 복잡성.

+0

적절한 오류 처리 : 그런 다음 의사 코드는이를 원하십니까? –

답변

1

고객 개체 외에 고객 키를 키로 사용하여 모든 고객 개체에 대한 참조를 Dictionary에 보관하십시오. 새 Customer 객체를 만들 때 먼저 새 CustomerKey가 사전에 이미 있는지 테스트합니다.이 경우 새 객체 만들기를 건너 뛰고 사용자에게 메시지를 표시합니다.

사전을 사용하면 MS Scripting Runtime에 대한 참조를 추가해야합니다.

이 방법의 다른 장점은 당신이 항상 gDicCustomers(CustomerKey) 어떤 고객 객체를 참조 할 수 있다는 것입니다
Global gDicCustomers as Dictionary 

LoadCustomers() 
    Set gDicCustomers = New Dictionary 
    For each worksheet in the workbook 
    If the worksheet contains a named range, "CustomerKey" 
     If gDicCustomers.Exists(CustomerKey) Then 
     MsgBox "Dont screw with the customer worksheets - or at least be so decent to change the customer key, too!" 
     Else 
     Create a new customer object 
     Set its key equal to the value in the range "CustomerKey" 
     Load data from the worksheet into the object 
     gDicCustomers.Add CustomerKey, CustomerObject 
     End If 
    End If 
    Loop 
End 

...

관련 문제