In einer Calc-Arbeitsmappe habe ich eine gewisse Anzahl Datentabellen mit gleicher Struktur, dazu genau eine Statistiktabelle. Die Anzahl der Datentabellen und der jeweiligen Zeilenanzahl ist variabel.
Die Benutzung erfolgt über selbst geschriebene Makros, auch das Einfügen und Entfernen von Zeilen und Datentabellen.
Für bestimmte Zellen in den Datentabellen benötige ich den erwähnten Listener. Beim Öffnen einer Arbeitsmappe wird allen betreffenden Zellen in allen Datentabellen der Listener hinzugefügt (das modify-Event aktualisiert eine bestimmte Zelle):
Code: Alles auswählen
dim oModListener as object
Sub InitListener()
REM Is invoked, when the document is opened.
dim oSheets as object
dim iStatSheetIndex as integer
dim i as integer
oModListener = _
createUnoListener("Mod_", "com.sun.star.util.XModifyListener")
oSheets = ThisComponent.getSheets()
iStatSheetIndex = oSheets.getByName("Jahresstatistik").RangeAddress.Sheet
for i = 0 to oSheets.getCount() - 1
if i <> iStatSheetIndex then
SetModListener(oSheets(i))
end if
next
End Sub
Sub SetModListener(oSheet)
dim iBottom as integer
dim i as integer
iBottom = oSheet.getCellByPosition(RECNR_COL, RECNR_ROW).Value + 2
oSheet.unprotect("")
for i = STARTROW to iBottom
oSheet.getCellByPosition(2, i).addModifyListener(oModListener)
oSheet.getCellByPosition(5, i).addModifyListener(oModListener)
oSheet.getCellByPosition(8, i).addModifyListener(oModListener)
oSheet.getCellByPosition(10, i).addModifyListener(oModListener)
oSheet.getCellByPosition(14, i).addModifyListener(oModListener)
oSheet.getCellByPosition(16, i).addModifyListener(oModListener)
next
oSheet.protect("")
End Sub
Was mache ich falsch?
Gruß
Volker