Seite 1 von 1
[gelöst] Datenübergabe zwischen SUBs
Verfasst: So, 05.02.2012 14:28
von der_Zerstreute
Hallo Leute ,
Ich bin hier noch auf ein weiteres Problem gestoßén.
Ich öffne in meinem Makro ein Dialogfenster in dem ich einen Datensatz auswählen kann.
In diesem Fenster sind Buttons die ein weiteres Dialogfenster öffnen. Leider brauche ich in diesem zweiten Dialogfenster Daten aus der Main-Routine , diese stehen nicht zur verfügung da sie in einer Variable abgelegt sind die im Programm dimensioniert wird (Datenabhänig).
Wie bekomme ich dieses Array in mein zweites Dialogfenster ohne sie als Global definieren zu müssen ? Geht das überhaupt ?
Danke für Eure Hinweise ..
Re: Datenübergabe zwischen SUBs
Verfasst: So, 05.02.2012 17:37
von Frieder D.
Hallo der_Zerstreute
Es kommt darauf an, ob diese Daten auch im Dialog angezeigt werden.
Wenn das so ist, kannst du sie natürlich mit dem zweiten Sub aus dem Dialog auslesen.
Aber was spricht eigentlich gegen Globale Variablen?
Gruß Frieder
P.S. wir könnten dir hier viel besser helfen, wenn du deinen Code hier posten würdest,
oder noch besser das gesamte Dokument mit Dialogen und Makros anhängen.
Re: Datenübergabe zwischen SUBs
Verfasst: So, 05.02.2012 18:33
von komma4
Frieder D. hat geschrieben:Aber was spricht eigentlich gegen Globale Variablen?
Dagegen spricht, dass sie eben globale Gültigkeit haben - für die gesamte Dauer der OOo-Sitzung!
Ich lasse meinen Rechner und OOo meist (mehrere Wochen) durchlaufen... durch globale Variablen wird der während des Makrolaufs belegte Speicherplatz aber nicht mehr freigegeben.
Deshalb meist besser
PUBLIC Variablen zu verwenden. Mehr in der F1 Hilfe.
Re: Datenübergabe zwischen SUBs
Verfasst: So, 05.02.2012 22:11
von der_Zerstreute
Hallo Ihr zwei ,
ein weiterer Punkt , warum es bei mir ungeschickt wäre es in ein Global Array zu packen , das Array wird innerhalb der Hauptprozedur in Abhängigkeit vom Inhalt einer Datei dimensioniert. Da sich der Inhalt der Datei aber ändern kann ,brauche ich flexible Arrays und das geht leider nicht mit Globals

.
Gruß Daniel
Re: Datenübergabe zwischen SUBs
Verfasst: So, 05.02.2012 22:21
von Stephan
und das geht leider nicht mit Globals
Und wie kommst Du zu dieser Aussage?
Ich kann hier Global definierte Arrays jedenfalls wunderbar mit Redim anpassen:
Code: Alles auswählen
Global xyz()
Sub testen()
Redim Preserve xyz(3)
Msgbox UBOUND(xyz())
Redim Preserve xyz(5)
Msgbox UBOUND(xyz())
End Sub
Du nicht? UNd falls ja warum nicht? WElche Nebenbedingungen?
Gruß
Stephan
Re: Datenübergabe zwischen SUBs
Verfasst: Mo, 06.02.2012 16:48
von der_Zerstreute
oh coool .. "Preserve" war mir so nicht geläufig ! muß ich übersehen haben

..
Danke , damit sollte das funktionieren

Re: Datenübergabe zwischen SUBs
Verfasst: Mo, 06.02.2012 17:20
von Stephan
oh coool .. "Preserve" war mir so nicht geläufig !
Ich bin jetzt zu faul das auszuprobieren, aber willst Du mir damit sagen das ein einfaches Redim nicht geht?
Ja, die FRage ist ernstgemeint, denn Preserve bewirkt ja nur den ERhalt vorhandener Werte und wurde hier von mir ohne besondere Absicht verwendet, wäre also eigentlich überflüssig wenn es nur formal darum ginge dEine Anforderung zu erfüllen, die hieß:
brauche ich flexible Arrays und das geht leider nicht mit Globals
Gruß
Stephan
Re: Datenübergabe zwischen SUBs
Verfasst: Mo, 06.02.2012 17:36
von der_Zerstreute
Hallo Stephan ,
Ok hast recht , es bleibt ein Global

. Ich muß eingestehen das nicht ausprobiert zu haben.

[Schande über mein Haupt

]..
Ich ging davon aus das nach einem ReDim die Variable kein Global mehr ist .. Weit her geholt , jetz wo ich drüber nachdenke

..
Danke aber für den Hinweis

.
Gruß
Daniel