Verwalten von benutzerdefinierten Typen, die auf verschiedenen Modulen
Was ist der beste Weg, zu verwalten, gemeinsam zu benutzerdefinierten Typen, die über VBA-Module?
Ich mit dem gleichen user-defined types in verschiedenen Modulen. Zum Beispiel, brauche ich oft an stellen (x,y) - Punkte, so dass ich am Ende mit diesem Type
in verschiedene Module:
Type XYpointType
x As Double
y As Double
End Type
Ich Argumente der Art XYpointType
zu und von subs und Funktionen in verschiedenen Modulen.
Jedoch, ich vermute, das ist ein schlechter Weg, um zu verwalten, Benutzer-definierte Typen. Die genaue gleichen Type
definition code landet in viele verschiedene Module.
Alternativ hätte ich dieses Type
Erklärung in einem einzigen, zentralen "Typen" - Modul, und alle anderen Module benötigen diese Besondere Art beziehen sich auf die Typen-Modul. Der Nachteil ist, dass jedes Modul verliert seine "Modularität", dass es sein muss, begleitet byt die "Typen" - Modul, wo immer es geht.
Irgendwelche Vorschläge?
- downvoter: Pflege zu erklären? Gleichzeitige downvotes auf zwei meiner ältere Fragen... riecht wie Scharfschützen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist interessant, weil ich nie wusste, dass Sie zwei Module, beide deklarieren eine Öffentliche Typ mit dem gleichen Namen. Nun, ich weiß, ich bin entsetzt.
Also erstmal, Eric Towers ist richtig, dass Sie möchten, um Ihre Typ-Deklaration in nur einem Modul. Andere Module, die diese Art wird davon abhängen, dass das Modul nicht verfügbar sind, aber das ist einfach etwas, das kommt mit der Modularisierung. Die Notwendigkeit zum verwalten der Abhängigkeiten zwischen den Modulen gemeinsam ist allen software-Entwicklung. Es ist bedauerlich, dass innerhalb einer einzigen VBA-Projekt (wie die Art, die Sie finden würde, in einem einzigen Excel-Arbeitsmappe) die einzige option für die Verwaltung der Modul-Abhängigkeiten manuell. (In VBA "Module" sind wirklich "Quellcode Dateien". Andere Sprachen/Umgebungen haben verschiedene höher-level-packaging-Systeme.)
Nun zum erschreckenden Teil. Wenn Sie deklarieren, die Typen mit dem gleichen Namen in verschiedenen Modulen, stellst dich du für Probleme. Betrachten Sie zwei VBA-Module:
und
in das gleiche Projekt, code "kompilieren" (zumindest in Excel-VBA). Aber die beiden 'useTyp' subs geben unterschiedliche Ausgaben. Schlimmer noch, wenn Sie entfernen Sie eine der Type-Deklarationen aus einem der Module haben, haben Sie plötzlich geändert, das Verhalten der 'useTyp" routine im selben Modul! Diese Art von Mehrdeutigkeit ist niemals wünschenswert.
Was Los ist, dass VBA ist wirklich die Schaffung von zwei verschiedenen Arten, 'Module1.typ " und " Modul2.typ'. Wenn Sie in der gleichen Modul-und nicht qualifizieren, der name des Typs, VBA still findet die "richtige" Art und nutzt es.
Ich bin ein wenig überrascht zu hören, dass Sie vorbei sind, um Instanzen von einer 'XYpointType' für Module, die eine andere 'XYpointType' Erklärung. Es ist nicht so wichtig, aber konnte Sie nach dem code? Ich bin interessiert in nitpicky Dinge wie diese...
Verwenden Sie Ihre zweite Methode. Der Punkt ist, um eine wiederverwendbare Typen blob. Werden wiederverwendbare, es muss getrennt werden. Dann, ja, jedes Modul nutzt diese Arten verweisen muss, dass blob. Aber das gleiche kann gesagt werden über Module aufrufen, die in jedem anderen, Formen, die die Module, die Sie rufen, et c.
Können Sie auch erstellen Sie eine Klasse für Ihre XYPoints. Dies ermöglicht es Ihnen, benutzerdefinierte Funktionen und Methoden sollten Sie brauchen, um zu gehen diesen Weg. Typen sind sehr gering im Vergleich zu den Klassen.
Hier ist eine gute Ressource, um Ihnen den Einstieg: http://www.cpearson.com/excel/Classes.aspx