von bst » Di, 02.02.2010 21:11
Abend auch,
Dein Change-Ereignis tut schon in Excel nicht das was Du möchtest.
S17 wird da nur erhöht wenn Du A10 manuell (oder per VBA) auf den Wert 23 veränderst, nicht wenn die Änderung durch eine Formel geschieht.
Von dem abgesehen sollte sich das Change-Ereignis von Excel in etwa so in OOo Calc realisieren lassen.
Um das automatisch zu starten musst Du AutoOnOpen noch mit dem Ereignis "Dokument öffnen" und AutoOnClose mit dem Ereignis "Dokument schließen" verknüpfen.
Jegliche Verbesserungen sind mehr als willkommen.
cu, Bernd
--
Code: Alles auswählen
REM ***** BASIC *****
Dim oModListener as object
Dim oModZelle as object
Sub AutoOnOpen
on error resume next
AutoOnClose
oModListener = CreateUnoListener("MyChange_", "com.sun.star.util.XModifyListener")
oModZelle = ThisComponent.sheets().getByName("Tabelle1").getCellRangeByName("A10")
oModZelle.AddModifyListener(oModListener)
End Sub
Sub AutoOnClose
on error resume next
oModZelle.removeModifyListener(oModListener)
End Sub
Sub MyChange_Modified(oEvent)
oActZelle = ThisComponent.CurrentSelection
if oActZelle.supportsService("com.sun.star.sheet.SheetCell") then
if oActZelle.Value = 23 Then
oCell = ThisComponent.sheets().getByName("Tabelle1").getCellRangeByName("S17")
oCell.Value = oCell.Value + 1
endif
endif
End Sub
Abend auch,
Dein Change-Ereignis tut schon in Excel nicht das was Du möchtest.
S17 wird da nur erhöht wenn Du A10 manuell (oder per VBA) auf den Wert 23 veränderst, nicht wenn die Änderung durch eine Formel geschieht.
Von dem abgesehen sollte sich das Change-Ereignis von Excel in etwa so in OOo Calc realisieren lassen.
Um das automatisch zu starten musst Du AutoOnOpen noch mit dem Ereignis "Dokument öffnen" und AutoOnClose mit dem Ereignis "Dokument schließen" verknüpfen.
Jegliche Verbesserungen sind mehr als willkommen.
cu, Bernd
--
[code]
REM ***** BASIC *****
Dim oModListener as object
Dim oModZelle as object
Sub AutoOnOpen
on error resume next
AutoOnClose
oModListener = CreateUnoListener("MyChange_", "com.sun.star.util.XModifyListener")
oModZelle = ThisComponent.sheets().getByName("Tabelle1").getCellRangeByName("A10")
oModZelle.AddModifyListener(oModListener)
End Sub
Sub AutoOnClose
on error resume next
oModZelle.removeModifyListener(oModListener)
End Sub
Sub MyChange_Modified(oEvent)
oActZelle = ThisComponent.CurrentSelection
if oActZelle.supportsService("com.sun.star.sheet.SheetCell") then
if oActZelle.Value = 23 Then
oCell = ThisComponent.sheets().getByName("Tabelle1").getCellRangeByName("S17")
oCell.Value = oCell.Value + 1
endif
endif
End Sub[/code]