Seite 1 von 1
Variablen wie gültig bis calc-Dokument geschlossen wird
Verfasst: So, 26.01.2020 13:25
von Postbyme
Hallo,
habe ein Calc-Formular mit mehren Buttons denen jeweils eine Funktion (Makro) zugeordnet ist. Habe jetzt das Problem wenn Button 1 (Funktion 1 ) jetzt eine globale Variable versorgt, dann ist dieser Wert nicht mehr vorhanden wenn ich per Botton 2 (Funktion 2) darauf zugreifen möchte.
Bei "end function" von Funktion 1 wird die globale Variable gelöscht - bedeutet dieses das ich mir solche Sachen über eine Tabellenzelle merken muss?
Danke
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
Verfasst: So, 26.01.2020 14:02
von F3K Total
Moin,
ich verstehe das Problem nicht, anbei ein Beispiel, setze die Variable mit Schaltfläche 1, und lies sie wieder ein, sooft du möchtest, mit Schaltfläche 2.
Funktioniert, solange Basic nicht zwischendrin abstürzt. Sicherer Ist also die Variante mit Zwischenspeicherung irgendwo im Dokument.
Gruß R
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
Verfasst: So, 26.01.2020 15:50
von Postbyme
Hallo und danke für die Datei. Hat mir dann geholfen meinen Fehler zu finden. Der Variablenbeobachter in der IDE zeigt nach "end Sub" einen leeren Variableninhalt an obwohl der Inhalt noch besteht. Das hat mich verunsichert. Programmiere schon lange hier aber das ist mir erst heute aufgefallen.
Danke!
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
Verfasst: So, 26.01.2020 19:47
von Postbyme
Fehler war letztendlich die Variablendeklaration mit "global". Hatte gedacht, dass alle Variablen die vor dem ersten Makro definiert werden automatisch global sind. Diese Variablen sind jedoch global definiert aber speichern keine Daten funktionsübergreifend. Sehe ich das richtig oder stehe ich jetzt ganz auf der Leitung
Winni
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
Verfasst: So, 26.01.2020 19:55
von mikeleb
Hallo,
entscheidend ist, mit welchem Schlüsselwort sie deklariert werden.
Zitat Hilfe:
Dim deklariert lokale Variablen in Subroutinen. Globale Variablen werden mit den Anweisungen PUBLIC oder PRIVATE deklariert.
und dann gibt es noch Global
Dimensioniert eine Variable oder ein Array auf globaler Ebene (also nicht innerhalb eine Subroutine oder Funktion), sodass die Variable oder das Array in allen Bibliotheken und Modulen für die Dauer der aktuellen Sitzung gültig ist.
Korrektur: Wird eine Variable per Dim außerhalb einer Sub oder Function deklariert, so gilt sie innerhalb des gesamten Moduls. Sie behält ihren Wert allerdings nur so lange, wie das Makro läuft.
Zum Testen:
Code: Alles auswählen
Dim a as integer
Sub Main
a=25
msgbox a
neu
End Sub
sub neu
a=a+25
msgbox a
end sub
Rufe zunächst "Main" auf und danach (einzeln) "neu". Probier dann mal die Deklaration per Public bzw. Global.
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
Verfasst: Mi, 29.01.2020 20:32
von Postbyme
Hoppla,
bei getrennter Ausführung hat "neu" noch den Wert 25 in a wenn dieses mit "global" definiert wurde. Das war mir so nicht klar. Hatte gedacht das die Angabe "global" nur "nice to have" ist.