2014-02-05 2 views
3

내 함수가 컬렉션을 가져오고 항목이 개체 또는 프리미티브 일 수 있습니다. 이 항목을 변형에 어떻게 할당 할 수 있습니까? 내가 무엇vba-variant : 클래스와 프리미티브 유형을 처리하는 방법

이제이 같은 같습니다

Dim vItem As Variant 
On Error Resume Next 
vItem = oCollection.Item(sKey) 
If Err.Number = 91 Then 
    Set vItem = oCollection.Item(sKey) 
On Error GoTo 0 

나는 그것이 작동하는 생각을하지만, 그것을 할 수있는 더 좋은 방법이 있는지 궁금하다.

답변

2

varType() 함수를 사용하여 유형을 테스트하거나 특정 유형을 테스트하는 경우 typeof를 사용할 수 있습니다.

 If VarType(oCollection.Item(sKey)) = vbObject Then 
      Set vItem = oCollection.Item(sKey) 
     Else 
      vItem = oCollection.Item(sKey) 
     End If 
+0

그럴 수도 있지만 해결책은'oCollection.Item (sKey)'를 사용해야합니다. 설명했다 [여기] (http://stackoverflow.com/questions/137845/determining-whether-an-object-is-a- 회원 --of-a-collection-in-vba) 마크 Nold에 의해 훨씬 빠릅니다 특히 내가 거대한 콜렉션을 가질 것이기 때문에) –

+0

어때?'VarType (oCollection.Item (sKey)) = vbObject'? – SWa

+0

예 - 물론 작동합니다 (저에게 쉬운 것 같았습니다 ..) –

관련 문제