2009-11-16 2 views
2

인스턴스화 된 클래스의 값을 초기화하는 데 사용할 값 목록을 만드는 워크 시트를 만들려고합니다. 그때이 워크 시트를 구문 분석하고 내가 속성을 초기화하는 데 사용할 수있는 enumberable 나를 제공 할 클래스를 만들 것VBA에서 런타임에 속성 이름이 제공되는 속성에 값을 어떻게 할당합니까?

Property Name    Value 
StartingCol    A 
StartingRow    11 

:

예를 들어, 나는 내 초기화 워크 시트에 다음이있을 수 있습니다 인스턴스화 된 오브젝트의 그러나 코드에서 명시 적으로 지정하는 대신 문자열을 사용하여 런타임에 속성 값을 지정하는 방법을 모르겠습니다.

Sub test_PropertyAssignment() 
Dim sp As SheetParser 
Dim strFieldName As String 
Dim strFieldNameValue As String 
Set sp = New SheetParser 

'The property name is supplied explicitly' 
sp.StartingCol = "B" 

strFieldName = "StartingCol" 
strFieldNameValue = "B" 

sp.[how can I supply strFieldName to specify the property?] = strFieldNameValue 'Will not Work' 

End Sub 

코드에서 명시 적으로 지정하는 대신 속성 이름을 대신 지정 런타임에 문자열을 사용하는 방법이 있나요 : 당신은 내가 아래의 코드를 달성하기 위해 노력하고있어 아이디어를 얻을 수 있습니까?

답변

2

VBA 도움말에서 CallByName 함수를 찾습니다. 당신이 뭔가를 할 수 있어야합니다

Call CallByName(sp,strFieldName,vbLet,strFieldNameValue)

+0

이것은하자 속성 지정을 위해 좋은 일했다. 이제는 인스턴스화되지 않은 객체의 Set 속성에 대한 작동 방식을 이해하려고합니다. 또 다른 질문입니다. –

+0

CallByName()을 사용하려면 실제 객체 인스턴스가 필요합니다. – jtolle

관련 문제