Seite 1 von 1

Gelöst: Calc Makro und Library mit globalen Variablen

Verfasst: Do 13. Jun 2013, 11:58
von spanier
Hallo liebe Forumsteilnehmer,

ich habe eine größere Excel-VBA-Makrosammlung nach Calc-Basic portiert. Die Makros unter Calc-Basic laufen soweit. Jetzt möchte ich die Makros besser organisieren. Dazu habe ich eine Bibliothek geschaffen. Darin habe ich Variablen (global und public), selbstdefinierte Datentypen und häufig gebrauchte Routinen untergebracht. Gespeichert ist sie unter Meine Makros & Dialoge -> Common. Common ist also der Name meiner Bibliothek.

Mir ist folgendes dabei aufgefallen: Die Bibliothek lade ich zur Laufzeit durch GlobalScope.BasicLibraries.loadLibrary("Common"). Jetzt kann ich auf die Variablen, Datentypen und Routinen aus der Bibliothek zugreifen. Bei den global definierten Variablen klappt dass jedoch nicht immer. In manchen Fällen ist bei einem Zugriff auf eine global definierte Variable diese leer, obwohl sie vorher durch eine andere Sub des gleichen Moduls gesetzt wurde.

Beispiel:

Ich benötige den numerischen Wert einer Spalte und ermittle den wie folgt:

Code: Alles auswählen

  myCellAddress = myCell.getCellAddress()
  myColumn = myCellAddress.Column
  BlockStatCol = myColumn
BlockStatCol enthält dann z.B. den Wert 22.

Dabei ist "BlockStatCol" eine global definierte Variable in meiner Bibliothek.

In einer Subroutine aus der Bibliothek möchte ich auf diese Varable zugreifen:

Code: Alles auswählen

BLSpalte = BlockStatCol - mySheet.getCellRangebyName("BlockLaengeRot").Value
Hier hat BlockStatCol den Wert -1 und folglich gib es einen Laufzeitfehler.

Hat jemand dazu ein Idee, die mir weiterhelfen kann?

Gruß Spanier

Re: Calc Makro und Library mit globalen Variablen

Verfasst: Do 13. Jun 2013, 18:07
von spanier
Hallo,

ich habe gerade mit Erschrecken festgestellt, dass nach einem Upgrade von LO 4.0.2 auf LO auf die 4.0.3.3 keines meiner Makros mehr läuft. Alle haben Probleme mit globalen Variablen.

Ich hatte eigentlich gehofft, ohne Excel auszukommen. Es hat ja auch bis zum Upgrade geklappt.

Ich bis sowas von begeistert :oops: .

Gruß

Spanier

Re: Calc Makro und Library mit globalen Variablen

Verfasst: Do 13. Jun 2013, 19:39
von karolus
Hallo

Dann programmiere halt vernünftig und übergib Variablen als Funktionsargument, oder ( falls sie tatsächlich erst später in anderen Routinen gebraucht werden ) speichere sie in irgendeiner Form, und nimm dazu eine richtige Programmiersprache statt einem Relikt aus der Computersteinzeit namens "Basic".

Karolus

Re: Calc Makro und Library mit globalen Variablen

Verfasst: Fr 14. Jun 2013, 14:33
von spanier
@karolus

Sehr hilfreich Deine Argumentation.

Gruß Spanier

Gelöst: Calc Makro und Library mit globalen Variablen

Verfasst: Fr 14. Jun 2013, 14:43
von spanier
Hallo,

das Problem konnte ich lösen.

Verschiedene Verarbeitsschritte in meiner Makro-Anwendung werden durch Ereignisse von Buttons ausgelöst. Hier kommt es laut OpenOffice Wiki zu folgendem Effekt:
...module variables are reset after each macro completion.
Zu finden hier: http://wiki.openoffice.org/wiki/Documen ... _Variables

Das trifft auch für global oder public definierte Variablen zu.

Ich habe folgendes gemacht:
Die entsprechenden Variablen als Benutzerdefinierte Datentypen angelegt, bei meiner Intialialisierung der Anwendung mit createObject meine Variablen erzeugt, dann kann man darauf zugreifen, ohne das die Variablen jedesmal neu initialisiert werden.

Gruß Spanier