VBA: Code auslagern und dann #include oderso?

Hallo,

ich habe das Problem, daß mein Modul immer länger wird, weil ich einen riesige Haufen von kleinen Funktionen und Prozeduren darin habe. Kein schönes Arbeiten mehr …

Ich würde den ganzen Kram gern irgendwie auslagern, so wie man es bei Pascal z.B. mit Units macht. Wichtig ist eben, daß der ausgelagerte Code offiziell zum Modul gehört. Geht das auch bei VBA bzw. VB? Konnte sowas nicht in der Hilfe finden.

Danke schon einmal für Eure Tips :wink:

Kristian

Ich weiss zwar nicht was du meinst, wenn du sagst „wichtig ist, dass der ausgelagerte code offiziell zum modul gehört“, aber du könntest alle deine Standardfunktionen, die so viel platz wegnehmen in eine DLL auslagern.

Gruss, Daniel

Ich weiss zwar nicht was du meinst, wenn du sagst „wichtig
ist, dass der ausgelagerte code offiziell zum modul gehört“,

Das bedeutet, daß ich z.B. im Code eines Formulars nach wie vor auf die ganzen Komponenten zugreifen kann. Mit „Me.Textbox1.Text“ beispielsweise.

aber du könntest alle deine Standardfunktionen, die so viel
platz wegnehmen in eine DLL auslagern.

Hm. Wäre ein bissl doof, weil ich die Word-Datei, mit der ich arbeite, als solche weitergeben will. Nichts weiter. Ist aber trotzdem ein guter Tip. Merke ich mir. Bis dahin kriege ich hoffentlich raus, wie das geht mit DLLs unter VBA :wink:

Kristian

Das bedeutet, daß ich z.B. im Code eines Formulars nach wie
vor auf die ganzen Komponenten zugreifen kann. Mit
„Me.Textbox1.Text“ beispielsweise.

Leg dir doch die einzelnen Funktionen in eigene Modul (*.BAS). Du mußt dann nur darauf achten, daß die Schnittstellen-Funktionen bzw. -Subs als PUBLIC deklariert sind. Evtuell vorhandene untergeordnete Funktionen und Subs können natürlich auch innerhalb des *.BAS-Moduls auf PRIVATE bleiben.

Auf die Dialogelemente einer Form kannst du immer nach dem Muster „FormName!DialogElement.Eigenschaft“ zugreifen.

Grüße
Siegfried

Leg dir doch die einzelnen Funktionen in eigene Modul (*.BAS).
Du mußt dann nur darauf achten, daß die
Schnittstellen-Funktionen bzw. -Subs als PUBLIC deklariert
sind. Evtuell vorhandene untergeordnete Funktionen und Subs
können natürlich auch innerhalb des *.BAS-Moduls auf PRIVATE
bleiben.

Das Problem scheinen mir die Variablen zu sein. Ich definiere in meinem Form-Code Benutzer-Typ-Variablen. Wenn ich diese blöden Dinger als Parameter einer Funktion übergeben könnte, würde ich die Funktionen einfach, wie üblich, in eine Klasse auslagern. Wäre auch viel übersichtlicher im Code mit der Objekt-Referenz.
Aber VB läßt leider nur die Grundtypen als Parameter zu, und das macht solchen Bestrebungen sehr schnell ein Ende. Mit den Modulen wird’s ähnlich sein, oder?
Außerdem: *.bas-Dateien verletzen den Grundsatz, daß ich lediglich die Word-Datei weitergeben will. Nichts sonst.
Aber davon abgesehen, wie würdest Du denn die *.bas einbinden (Syntax)?

Kristian

Ähm, das mit den Parametern (siehe Re:smile: muß (darf) ich wohl teilweise zurücknehmen - kann es sein, daß Office2000 da eine Veränderung erfahren hat? Ich kann nämlich plötzlich auch benutzerdefinierte Typen als Parameter übergeben. Ist ja wegen ByRef eigentlich auch kein Akt, aber ging bisher meiner Erinnerung nach nicht.

Kristian