...das Problem wurde auf der Liste
bereits am 2.6.2006 abschließend gelöst.
Im folgenden gebe ich den Text wieder,
den ich mir damals abgespeichert habe
(ich weiß aber leider nicht mehr,
von wem er stammt):
"...
Auf der deutschen Users-Mailingliste von OpenOffice.org haben wir die
Frage von Vera Unverzagt besprochen, wie man in Calc die leeren Zellen
eines Zellbereiches mit einem bestimmten Eintrag versehen kann.
Hier als Beispiel ein Basic-Makro, das diese Aufgabe übernimmt.
REM ***** Hier beginnt der Makrocode *****
sub LeerzellenErsetzen()
Dim oSel as Object
Dim iErsteZeile as Integer
Dim iErsteSpalte as Integer
Dim iLetzteZeile as Integer
Dim iLetzteSpalte as Integer
Dim iZeile as Integer
Dim iSpalte as Integer
Dim sEinfuegewert as string
oSel = thisComponent.getCurrentselection()
iErsteSpalte = oSel.rangeAddress.startColumn
iErsteZeile = oSel.rangeAddress.startRow
iLetzteSpalte = oSel.rangeAddress.EndColumn
iLetzteZeile = oSel.rangeAddress.EndRow
sEinfuegewert = Inputbox("Einzufügender Text:")
if sEinfuegewert = "" then exit sub
for iZeile = 0 to iLetzteZeile - iErsteZeile
for iSpalte = 0 to iLetzteSpalte - iErsteSpalte
if oSel.getCellByPosition(iSpalte,iZeile).string = "" then
oSel.getCellByPosition(iSpalte,iZeile).string = sEinfuegeWert
endif
next iSpalte
next iZeile
end Sub
REM ***** Ende des Makrocodes *****
Wie funktioniert das Makroprogramm?
Zunächst ermitteln wir mit thisComponent.getCurrentselection() den
momentan markierten Zellbereich. StartColumn, StartRow, EndColumn,
EndRow verraten die erste und letzte Zeile bzw. Spalte des Bereichs. Die
Zellen des Bereichs werden in zwei verschachtelten For-Next-Schleifen
durchlaufen. Der Inhalt der Zelle wird mit
oSel.getCellByPosition(iSpalte,iZeile).string angesprochen. Ist dieser
leer, so setzen wir ihn auf den Einfügewert, den wir vom Bediener mit
der Inputbox-Funktion erfragt haben.
Das Beispiel funktioniert nicht mit mehrfachen, nicht zusammenhängend
markierten Bereichen. Außerdem können nur Textwerte, also keine Zahlen
oder Formeln eingegeben werden. Dazu müsste das Makro etwas erweitert
werden.
Und hier die Klickanleitung, wie man das Makro in seiner
OpenOffice.org-Umgebung einbauen kann:
- Extras | Makros | Makros verwalten | OpenOffice.org Basic...
- "Meine Makros" | Neu
- Es öffnet sich der Makroeditor.
- Der Cursor blinkt vor "Sub Macro... End Sub"
- Ersetze diese Angabe durch den hier blau dargestellten Makrocode
- Makroeditor schließen
Um das Makro zu starten, wählt man Extras | Makros | Makros ausführen...
und blättert unter "Meine Makros" auf, bis der Makroname
"LeerzellenErsetzen" erscheint. Diesen markieren und auf "Ausführen"
klicken.
Zur Vereinfachung kann man sich zum Starten des Makros über "Extras |
Anpassen..." auch ein Symbol in die Symbolleiste legen."
Jörn