J'ai commencé à apprendre VBA pour mon travail à la fin de l'été dernier, et je peux dire avec fierté que c'est la première fois que je ne peux pas pour trouver la réponse sur Google. J'ai commencé à m'instruire sur les cours cette semaine, et je suis tombé sur une situation où j'aimerais pouvoir identifier une «propriété indexée» pour ma classe.Création d'une propriété Container dans une classe VBA qui renvoie des éléments indexés (Excel VBA 2003)
Puisque c'est probablement pas ici l'explication la plus claire, est un exemple hypothétique:
La classe que j'ai créé pour ma sandwicherie super génial (clsSASS) contient des propriétés pour les calories, le poids en grammes, le prix, et Ingrédients. Les trois premiers sont des variables avec des énoncés let et get très simples. I.E .:
Public pCal As Integer
Public Property Get Calories() As Integer
Calories= pCal
End Property
Public Property Let Calories(Value As Integer)
pCal = Value
End Property
Les ingrédients sont toutefois conçus pour contenir, dans l'ordre d'entrée, la liste des ingrédients. Mon instinct initial était de faire quelque chose comme ceci:
Public pIngd As Collection
Public Property Get Ingredients(Value As Integer) As Collection
Ingredients = pIngd(Value)
End Property
Public Property Set Ingredients(Object As Collection)
Set pIngd = Object
End Property
Donc, si Bacon était le premier ingrédient dans la liste (et soyons honnête, il serait toujours), quelque chose comme clsNewSandwich.Ingredients (1) reviendriez la chaîne 'Bacon'.
Le problème est survenu lorsque j'ai ajouté une propriété de conteneur à une classe et que je n'ai pas pu déterminer comment identifier les éléments individuels dans le conteneur. Il se peut donc que ce soit une simple question de syntaxe qui n'a rien à voir avec les classes.
Merci beaucoup!
* modifié pour plus de clarté/continuité
Il est un peu déroutant au nom votre propriété Let/Get avec des noms différents ('Calories' vs.' RowStart'). De toute façon, votre propriété 'Ingredients' est définie comme renvoyant une collection, mais vous ne renvoyez qu'un seul élément de la collection' pIngd'. Sauf si 'pIngd' est en fait une collection de collections, vous devez corriger le type de retour de' Ingrédients' –
Merci pour votre aide! J'ai modifié la question un peu pour plus de clarté. J'avais copié sur mon code actuel et l'ai édité à la hâte pour l'exemple. Juste pour m'assurer que je comprends, pour la propriété Get, je devrais obtenir la variable ou le type d'objet que je voudrais retourner (ce qui dans ce cas serait une chaîne). Propriété publique Obtient des composants (valeur en tant qu'entier) sous forme de chaîne – user2456814