VBA에서 Java의 Set 컨테이너와 같은 것이 있습니까? 세트가 VBA에서 예약 된 작업이므로 아무 것도 찾을 수 없으며 Google이 도움이되지 않습니다.Excel-VBA - VBA의 Javas Set 컨테이너와 같은 것이 있습니까?
모든 아이디어가 우수 할 것입니다. 지금 내 유일한 옵션은 사전 또는 배열입니다.
감사합니다.
VBA에서 Java의 Set 컨테이너와 같은 것이 있습니까? 세트가 VBA에서 예약 된 작업이므로 아무 것도 찾을 수 없으며 Google이 도움이되지 않습니다.Excel-VBA - VBA의 Javas Set 컨테이너와 같은 것이 있습니까?
모든 아이디어가 우수 할 것입니다. 지금 내 유일한 옵션은 사전 또는 배열입니다.
감사합니다.
VBA에는 'Collection'개체가 내장되어 있으며 많은 사람들이 MS Scripting Runtime의 'Dictionary'개체를 본질적으로 VBA의 일부로 간주합니다.
그러나 어느 것도 일반 개체에 대해 고유성을 적용하지 않습니다. 애플리케이션에 고유성을 적용 할 수 있는지 여부는 세부 사항에 따라 다릅니다.
예를 들어, 문자열 집합을 원한다면 쉽습니다. '사전'을 사용하고 키를 '세트'로 사용하십시오. 'Dictionary'는 'Exists'방법을 가지고 있으므로 실제 작업이 모두 포함 된 '사전'을 사용하여 제한된 'Set'클래스를 작성하는 것은 매우 쉽습니다. Excel을 사용하는 경우 문자열, 숫자, 불리언 값, 오류와 같은 간단한 Variant 값과 함께 사용할 수 있습니다.
개체 인스턴스가있는 경우 상황이 더 복잡해 질 수 있습니다. 'Dictionary'객체 은이 객체를 키로 사용하지만 동일성 테스트로 객체 ID를 사용합니다. 예를 들어, 난 그냥 VBA 직접 실행 창에이를 입력 : (. 'FV는'나는 디버깅을 위해 사용하는 VBA를 루틴입니다 - 그냥 물건의 캐릭터 라인 표현을 출력합니다)
이set d=new Dictionary
set c1=new Collection
set c2=c1
d(c1) = 42
fv d
<Dictionary: keys: #V(0..0){<Collection: 0 elems: >}, items: #V(0..0){42%}>
d(c2)=99
fv d
<Dictionary: keys: #V(0..0){<Collection: 0 elems: >}, items: #V(0..0){99%}>
set c3=new Collection
d(c3)=101
fv d
<Dictionary: keys: #V(0..1){<Collection: 0 elems: >,<Collection: 0 elems: >}, items: #V(0..1){99%,101%}>
당신은 동일한 개체를 볼 수 있습니다 는 동일하게 취급되지만 동일한 값인 은 개체가 아닙니다.
사용자 정의 평등 테스트가있는 세트가 필요한 경우 사소한 코드를 작성해야합니다. 그러나 객체 인스턴스에서 사전 키로 사용할 수있는 값으로 매핑을 작성할 수 있다면 자신의 "이 객체가 이미 세트의 멤버입니까?"라고 작성하지 않아도됩니다. 암호.
일부 relevane 링크 :
그래, 그게 내가 생각 어떤 종류입니다. 나는 당신의 대답을 투표 하겠지만 나는 n00b입니다. 고맙습니다. – Josh