2009-11-16 4 views
2

J'essaie de créer une feuille de calcul qui crée une liste de valeurs qui seront utilisées pour initialiser les valeurs d'une classe instanciée.Comment attribuer une valeur à une propriété où le nom de la propriété est fourni lors de l'exécution dans VBA?

Par exemple, je pourrais avoir ce qui suit dans ma feuille de calcul d'initialisation:

Property Name    Value 
StartingCol    A 
StartingRow    11 

je puis créer une classe qui parse cette feuille de calcul et me fournir un enumberable que je pourrais utiliser pour initialiser les propriétés d'un objet instancié. Cependant, je ne sais pas comment je pourrais spécifier la valeur de la propriété lors de l'exécution en utilisant une chaîne plutôt que de la spécifier explicitement dans le code. Vous pouvez avoir une idée de ce que je suis en train d'accomplir dans le code ci-dessous:

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 

Est-il possible d'utiliser une chaîne à l'exécution pour spécifier le nom de la propriété plutôt que de spécifier explicitement dans le code?

Répondre

2

Recherchez la fonction CallByName dans l'aide VBA. Vous devriez être en mesure de faire quelque chose comme:

Call CallByName(sp,strFieldName,vbLet,strFieldNameValue)

+0

Cela fonctionnait très bien pour des missions de propriété Let. Maintenant, j'essaie de comprendre comment le faire fonctionner pour les propriétés Set sur des objets qui n'ont pas encore été instanciés. Une autre question SO. –

+0

Vous avez absolument besoin d'une instance d'objet réelle pour utiliser CallByName(). – jtolle

Questions connexes