Seite 1 von 1
Re: Globale Variablen für Tabellendokumente
Verfasst: Mi, 15.06.2011 13:47
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
Re: Globale Variablen für Tabellendokumente
Verfasst: Mi, 15.06.2011 13:59
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.
Re: Globale Variablen für Tabellendokumente
Verfasst: Mi, 15.06.2011 19:06
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.