9
votes

Objet de classe VBA () en tant que propriété d'une autre classe

J'essaie de créer une classe pour contenir un nombre variable d'éléments (qui sont eux-mêmes un autre objet de classe).

donc, j'ai la classe 2: xxx

puis la classe 1 contient un tableau de classe 2: xxx

Et ce que je voudrais faire, c'est quelque chose comme: xxx

Le paramètre de première ligne MyQuotes.Curr n'est pas un problème, mais lorsque j'essaie de définir une valeur à l'intérieur de la matrice. erreurs de ligne avec la variable d'objet d'exécution 91 ou avec une variable de bloc non définie

Tous les pointeurs quant à ce que je fais mal et comment puis-je Définissez les valeurs des éléments dans la matrice de classe?

Merci d'avance!


1 commentaires

Outre la solution à votre problème qui est ci-dessous grâce à Alex K., puis-je simplement demander (de curiosité) Pourquoi faites-vous cela comme vous êtes au lieu d'utiliser une collection de citations?


3 Réponses :


1
votes

Peut-être qu'il devrait être xxx


0 commentaires

2
votes

Vous devez les définir comme nouvelle classe2 en classe1: xxx

tout comme vous le faites avec classe1 dans votre script final.


0 commentaires

7
votes

Lorsque vous MYQUOOTES.QUIOTE (3) CODE> Vous appelez Propriété Obtenez Devis Code> Qui a un problème.

Votre réseau interne de Classe2 code> n'est pas instancié, donc pquote (index) code> fait référence à un élément de tableau de rien code>, lorsque vous MyQuotes.Quote (3) .Tc = code> vous Essayez d'attribuer à rien code> qui échoue. p>

Vous devez vous assurer que pquote (index) code> est instancié; Vous pouvez le faire sur demande: p> xxx pré>

(notez le fichier requis code>) p>

ou en ajoutant une routine d'intialisation à CLASS1 CODE>: P>

Private Sub Class_Initialize()
    Dim Index As Long
    For Index = 0 To UBound(pQuote)
         Set pQuote(Index) = New Class2
    Next
End Sub


1 commentaires

Merci! Ça a marché!! J'ai également trouvé une autre erreur dans la classe1, comme il se doit lire Set Quote = PQuote (Index) : Propriété publique Obtenir une citation (index comme entier) As CLASS2 SET DEVITE = PQUOTE (Index)