J'essaie d'étendre la fonctionnalité de la collection VBA CODE> Objet CODE> dans une nouvelle classe et de faire en sorte que cette classe a héritable de interface mauvaise pour les outils: méthode
a souligné sous son nom. P>
blockQuote>
Quel trait de soulignement ?! Je sais que je dois écrire des méthodes / propriétés de délégation pour ajouter, article, etc. et une propriété de nouvelleenum pour Mon problème est que la collection question de bonus em>: est collection code>, mais la collection
implémentation < / code> déclaration me donne l'erreur suivante: p>
Ajouter code>,
élément code>,
Supprimer code> et
comptage code> sont les seules méthodes énumérées dans la documentation de la collection
/ code>. Les quatre sont sans traitance. p>
uniformesCollection code> (qui n'accepte que les membres qui sont tous du même type, inspirés par Cette approche ). J'aimerais que implémente em>
Collection code>, de sorte qu'un
Uniformcollection code> est une collection em>
code > et peut être utilisé à la place d'une collection code> lorsque vous appelez les méthodes d'autres objets, etc. p>
pour chaque code> pour travailler, et je l'ai déjà fait. p>
Implexments Collection code> me donne l'erreur indiquée ci-dessus. p>
compte code> une méthode ou une propriété de
collection code>? Aide appelle une propriété, mais le navigateur d'objet dans l'éditeur VBA appelle une fonction i.e. méthode (Boîte jaune volante). p>
4 Réponses :
VBA a beaucoup de limitations sur les classes que vous pouvez implémenter. Le Newenum trébuche la collection, mais même si ce n'était pas le cas, il pourrait très bien y avoir autre chose dans cette classe pour y traduire. Je pense que cela indique le premier problème qu'il trouve.
Parce que la collection a si peu de propriétés et de méthodes, je viens de les réécrire. P> ne sait pas pourquoi l'OB montre des méthodes (elles ressemblent à des boîtes vertes pour moi). Pour mon argent, des méthodes changent de multiples propriétés ou interagissent avec quelque chose en dehors de la classe. Tout le reste est une propriété. J'appellerais les propriétés de comptage et d'index. P> p>
Merci, mais j'ai déjà fait tout ce genre de choses ... voir Clarification Modifier.
Dick Kusleika a la plupart d'entre eux, mais si vous souhaitez utiliser ceci ' t discuté de l'un des liens que j'ai trouvé dans mes favoris ( Celui-ci ou Celui-ci ), mais ils 'Re à la fois la peine de lire. Si je trouve le site qui parle de newenum, je vais faire une édition pour l'ajouter. P> edit strong> p> Aucun de ces liens n'est celui que j'étais Vous recherchez, mais les deux discutent de la propriété de Newenum (y compris un petit vaudou supplémentaire qui ne doit être ajouté): p> Ces deux discussions sur Excel, mais la VBA est la même dans d'autres applications de bureau (y compris la nécessité du processus d'importation d'exportation-> text-modification pour obtenir des "attributs"). P> p> pour chaque code> sur votre classe personnalisée, vous aurez également besoin de:
Vous courez dans l'une des limitations des outils de VBA. Vous ne pouvez pas implémenter une autre classe si l'autre classe possède des méthodes publiques ou des propriétés avec un soulignement dans le nom. Par exemple, si vous avez créé une classe a ensuite créé une autre classe Collection Code> Classe de cours est
_Newenum CODE> mais tout soulignement provoquera un problème.
adresseClass code> qui comptait ce qui suit: p>
CustomerAddress code >: P>
Implements AddressClass
Private Property Get ClassInterface_Address_City() As String
End Property
Private Property Let ClassInterface_Address_City(ByVal RHS As String)
End Property
+1 Bonne explication. Donc, la ligne de fond est, si je comprends bien correctement, que la réponse à ma question (titre) n'est pas?
C'est ma croyance. Je suppose que certains guru VBA peuvent connaître un moyen de créer une catégorie code> de collection code> en dehors de Excel, puis d'importer, comme les attributs que vous devez définir afin que Nouveauenum fonctionne correctement, mais je ne pense pas vraiment ça peut être fait.
La note de re Rolandtumble sur "newenum":
Ma propre expérience d'accès 2003 est que "pour chaque" fonctionne bien en important du code, y compris la ligne p> . .. mais après i "/ décompilez" le fichier (commutateur de ligne de commande), la ligne a été supprimée (vérifiée à l'exportation) et le "pour chaque" ne fonctionne pas. P> Malheureusement, je dois utiliser " / Décompile "Quand" compresser et réparer "ne résout pas les choses pour moi. P> p>
C'est une question très intéressante. Je sais que vous peut i> implémenter des interfaces de classes intégrées (par exemple
Textstream code>). Je pense que @Dick est correct que ce sont les méthodes / propriétés cachées qui empêchent ceci pour
collection code>. Je n'ai jamais essayé de faire cela et je n'ai jamais beaucoup fait avec "réel" vb ou derrière les scènes com choses, donc je ne sais pas vraiment.
Pour certaines informations connexes, mais pas en fait une réponse à votre question, vous pouvez voir cette page addenda à "Hardcore Visual Basic" de Bruce McKinney: vb.mvps.org/hardweb/mckinney2a.htm . Recherche sur la page pour "Page 167", et il y a quelques discussions sur les différentes choses VB (et VBA) ne peut pas faire de re: interfaces. Ce site héberge tout le livre (hors impression), mais je n'ai pas pu comprendre un moyen de naviguer directement sur une page. Cela vaut la peine d'être acheté pour le coût de l'expédition + 0,01 $ d'intérêt général.