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
Variablen wie gültig bis calc-Dokument geschlossen wird
Moderator: Moderatoren
Variablen wie gültig bis calc-Dokument geschlossen wird
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
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
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
- Dateianhänge
-
- Globale_Variable.ods
- (10.39 KiB) 173-mal heruntergeladen
Zuletzt geändert von F3K Total am So, 26.01.2020 17:57, insgesamt 1-mal geändert.
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
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!
Danke!
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
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
Winni
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
Hallo,
entscheidend ist, mit welchem Schlüsselwort sie deklariert werden.
Zitat Hilfe:
Zum Testen:
Rufe zunächst "Main" auf und danach (einzeln) "neu". Probier dann mal die Deklaration per Public bzw. Global.
entscheidend ist, mit welchem Schlüsselwort sie deklariert werden.
Zitat Hilfe:
und dann gibt es noch GlobalDim deklariert lokale Variablen in Subroutinen. Globale Variablen werden mit den Anweisungen PUBLIC oder PRIVATE deklariert.
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.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.
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
Gruß,
mikeleb
mikeleb
Re: Variablen wie gültig bis calc-Dokument geschlossen wird
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.
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.
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)