Problem mit globaler Variable zur Stringübergabe

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

Moderator: Moderatoren

weinstein
*
Beiträge: 11
Registriert: So, 11.05.2008 15:18

Problem mit globaler Variable zur Stringübergabe

Beitrag von weinstein »

Hallo,

dieser Hilfeaufruf war erst im falschen Forum gelandet, ich hoffe hier ist er richtig!
Ich habe mit der Makroprogrammierung erst vor wenigen Tagen angefangen und habe deshalb ein vermutlich einfaches Problem, dessen Lösung ich aber alleine nicht finde.

Ich habe eine Terminplanung in OOO-Calc, wobei in verschiedene Felder immer wieder die gleichen Daten eingetragen werden sollen.
Immerhin habe ich es geschafft, den Inhalt der aktuellen Zelle testweise auszugeben.
Danach wird der Cursor auf ein anderes Feld gesetzt, hier sollte dann der unformatierte Inhalt des gemerkten Feldes eingetragen werden, ohne die neue Formatierung (Hintergrundfarbe) zu ändern.
Leider wird der Inhalt bei meinem Makro nicht eingefügt, ich habe eher den Eindruck, dass die Variable "oText" trotz globaler Definition nur lokal ist. Bestimmt sind aber wohl noch andere Fehler drin.

Kann mir jemand helfen?
Gruß, weinstein

Und hier mein Programmcode:

Code: Alles auswählen

REM --- Globale Variable für diese Makros
Public oText as String

sub kopiere_text
rem ----- der Inhalt des Feldes soll kopiert werden ---
rem define variables
Dim oTabellenblatt as Object
Dim oCalcDokument as Object
rem ----------------------------------------------------------------------
rem ----- Dokument und Tabelle auswählen
oCalcDokument = ThisComponent
oTabellenblatt = ThisComponent.Sheets().getByName( "B_Terminplan" )
oSelektion = oCalcDokument.getCurrentSelection()
rem ----------------------------------------------------------------------
oText = oSelektion.String
MsgBox oText
end sub

sub fuege_text_ein
rem ----- der Inhalt des gemerkten Feldes soll hier eingefügt werden ---
rem define variables
Dim oCalcDocument as Object
Dim oTabellenblatt as Object
rem ----------------------------------------------------------------------
rem ----- Dokument und Tabelle auswählen
oCalcDokument = ThisComponent
oTabellenblatt = ThisComponent.Sheets().getByName( "B_Terminplan" )
oSelektion = oCalcDokument.getCurrentSelection()
rem ----------------------------------------------------------------------
oSelektion.String = oText
MsgBox oText
end sub
hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Re: Problem mit globaler Variable zur Stringübergabe

Beitrag von hawe »

Hallo Weinstein,

wie Du unschwer feststellen kannst ist die Variable Global. Allerdings werden bei jedem Makrostart alle Variableninhalte gelöscht, ganz im Gegensatz zu VBA. Du wirst also ein Ablage-Sheet (ggf. unsichtbar) anlegen müssen, um was zwischen 2 Makroläufen aufzuheben.

Gruß HW
Hans W. Hofmann
Gruss HW
Win7/SuSe 11.2 - LO 3.3
weinstein
*
Beiträge: 11
Registriert: So, 11.05.2008 15:18

Re: Problem mit globaler Variable zur Stringübergabe

Beitrag von weinstein »

Hallo Hans W. Hofmann!

Vielen Dank für den Tipp - jetzt klappt es! da fehlen mir noch einige Hintergrundinformationen, die ich nirgendwo nachlesen konnte ...

Gruß, weinstein
Antworten