Globale Variablen für Tabellendokumente

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Globale Variablen für Tabellendokumente

Beitrag von balu »

Hallo Flyse,

kennst Du eigentlich schon Michael Dannenhoefer?
Wenn nicht, dann wirts aber aller höchste Eisenbahn für dich. Guckst Du hier: Welche Gültigkeit haben Variablen?

Ich hoffe Du kommst damit zu recht. Wenn nicht, einfach wieder melden.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Globale Variablen für Tabellendokumente

Beitrag von DPunch »

Aloha
Flyse hat geschrieben:Nun ist es ziemlich umständlich dies in jeder Prozedur zu wiederholen.
Wenn es nur zum Testen ist, musst Du die Variablen eigentlich gar nicht deklarieren - obwohl es natürlich gut ist, sich sowas von vornherein anzugewöhnen.

Ansonsten lautet die Syntax

Code: Alles auswählen

Private Document As Object
Private datasheet As Object
Private datasheet2 As Object
Private CellRange1 As Object
Private CellRange2 As Object
Private mycell as Object

Sub Test
  Document = thisComponent
  'etc
End Sub
Diese Art der Deklaration bedeutet natürlich, dass die Speicherbereiche reserviert werden, selbst wenn Du die Variablen gar nicht verwenden willst.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Globale Variablen für Tabellendokumente

Beitrag von DPunch »

Aloha
flyse hat geschrieben:Daran anschließend jedoch dann die Frage ob ich diesen außerhalb der sub deklarierten Variablen feste "Werte" zuweisen kann
Nein, nicht so, wie Du Dir das vorstellst.
Das geht nur bei Deklaration als Konstante und meines Wissens nach auch nur bei sogenannten Simple Types.

Die einzige Lösung, die Deiner Vorstellung nahe kommen würde, wäre folgende:

Code: Alles auswählen

Dim Doc as Object
Dim Tabelle as Object
Dim Wertebereich as Object
Dim Const sWertebereichname as String = "B3:G26"
Dim Const sTabellenname as String = "AniMesswerte"

Sub bla
  Doc = thisComponent
  Tabelle = Doc.Sheets.getByName(sTabellenname)
  Wertebereich = Tabelle.getCellRangeByName(sWertebereichname)
  'uswusf
End Sub
In der Praxis würde man das aber eher in eine eigene Prozedur auslagern, die man einfach zu Beginn der anderen Prozeduren aufruft, ala

Code: Alles auswählen

Dim Doc as Object
Dim Tabelle as Object
Dim Wertebereich as Object

Sub Init
  Doc = thisComponent
  Tabelle = Doc.Sheets.getByName("AniMesswerte")
  Wertebereich = Tabelle.getCellRangeByName("B3:G26")
End Sub

Sub bla
  Init()
  'Tatsächliche Arbeit im Makro
End Sub

Sub blub
  Init()
  'Tatsächliche Arbeit im Makro
End Sub
Dadurch müsstest Du bei einer Änderung nicht jede einzelne Prozedur anpassen, sondern es reicht die Änderung in Init.
Antworten