2013-02-28 4 views
2

VBA Excel 2010에 문제가 있습니다. 'Enclosure'라는 사용자 지정 클래스를 만들고 인스턴스를 만든 다음 이력서에 추가했습니다.
그런 다음 키를 반복하여 추가되었는지 확인하십시오.
인클로저 클래스를 추출하는 데 문제가 있습니다. 여기서 추출 부에 대한 내 코드는 다음과 같습니다Excel VBA : 사전에서 사용자 지정 클래스 추출

Sub AddEnclosureItem(sItemToAdd As String, ByRef rdEnclosures As Scripting.Dictionary, dDebug As Boolean) 

Dim TempEnclosure As Enclosure ' hold enclosure we pull 

TempEnclosure = rdEnclosures(1) 

End Sub 

나는 내가

어떤 생각을 진행하는 방법에의 '변수 또는 With 블록 변수가 설정되지 않은 객체 얻을 컴파일하려고? 내가 어딘가에 항목을 특정 개체의 진술서를 선언 할 수 있지만 2010 년에 작동하도록 얻을 수 없다는 것을 읽었습니다. 그게 내가 추측 할 수있는 전부입니다. 또는 인클로저 항목이 나오는대로 캐스팅하는 방법.

+1

시도해보십시오. Set TempEnclosure = rdEnclosures (1)':-) –

+0

안녕하세요 피터, 그래, 이걸 알아 냈어. 대답을하려했지만 새 것이기 때문에 7 시간 더 기다려야 해. 새로운 질문이 생겼습니다. 왜 내가 설정해야합니까? 클래스 내의 사전 속성에 대한 접근자를 설정해야했지만 왜이 작업을 수행했는지 잊어 버렸습니다. – grimchamp

답변

1

개체를 변수에 할당 할 때 Set 키워드를 사용해야합니다. Set의 반대는 Let이며 변수에 값 (객체가 아님)을 할당하는 데 사용됩니다. Let 키워드는 선택 사항이며 더 이상 거의 사용하지 않습니다.

SetLet이있는 이유는 대부분의 객체에 기본 속성이 있기 때문입니다. 즉, 속성이없는 옵션을 참조하면 기본 속성에 저장된 값을 반환합니다. Value 속성은 일반적인 기본 속성입니다. 이

x = Range("A1") 

상관이 허용

Let x = Range("A1").Value 

같은 본

x = Range("A1").Value 

와 동일하다 (I 번째 하나를 선호하지만). x가 두 번이나 문자열 인 경우 그 위대한, 그러나 x는 Range 개체 변수 인 경우, 당신은 당신이 Set 키워드를 생략 할 경우, VBA는 Let을 원하는 가정하고 (기본값)를 할당하려고 설정

Set x = Range("A1") 

를 사용할 필요 Value 속성은 x입니다. Range 객체 변수에 Double 또는 String을 할당하려고하기 때문에 'Object variable or block not set'오류가 발생합니다.

사용자 정의 클래스 모듈에 기본값이 없을 가능성이 있으므로이 중 아무 것도 중요하지 않습니다. 하지만 그렇습니다. 기본값이 없더라도 Set를 사용하여 객체를 참조해야합니다.

+0

고마워. :) 뒷모습에서 'set'이라는 단어는 모두 의미가 있지만 나중에 다시 알게되면 간단합니다. 이 문제와 관련된 다른 문제가 있습니다. 0120-13d 봐. – grimchamp

관련 문제