Ciao,
per gestire gli eventi da macro puoi procedere in due modi.
1. assegnando una sub-routine all'evento:
Sub SetDocEvent()
Dim oSheet
Dim mEvt(1) as New com.sun.star.beans.PropertyValue
oSheet = ThisComponent.getCurrentController.ActiveSheet
mEvt(0).Name = "EventType"
mEvt(0).Value= "Script"
mEvt(1).Name = "Script"
mEvt(1).Value
="vnd.sun.star.script:Standard.Module1.TestEventChange?language=Basic&location=application"
oSheet.getEvents().replaceByName("OnChange", mEvt())
End Sub
Sub TestEventChange
Msgbox("Test")
End Sub
2. utilizzando gli event listner:
Global oSheet, oRange, oListener
Sub AddListener
oSheet = ThisComponent.getCurrentController.ActiveSheet
oRange = oSheet.getCellRangeByName("A1:B2")
oListener = CreateUnoListener("Test_",
"com.sun.star.chart.XChartDataChangeEventListener")
oRange.addChartDataChangeEventListener(oListener)
End Sub
Sub Test_chartDataChanged
MsgBox("Test")
End Sub
Sub RemoveListner
oRange.removeChartDataChangeEventListener(oListener)
End Sub
Il primo metodo è del tutto equivalente all'assegnazione che fai via GUI.
Il secondo permette di attivare più listener sullo stesso foglio su
range diversi, e quindi è utile per gestire situazioni più complicate.
C.
Il 26/06/2014 16:30, gurxs ha scritto:
> Buongiorno a tutti,
>
> sto preparando un cockpit in Calc per eseguire alcuni controlli
> automatici sulla gestione di Errori.
>
> Fin'ora me la sono cavata abbastanza bene con Basic, ma adesso mi sono
> arenato su questo problema e spero che qualcuno di voi abbia e/o
> sappia aiutarmi a risolverlo.
>
> Quando l'utente inserisce un titolo nel foglio "Generale", ho fatto
> una macro che, in modo automatico, vada ad aprire un nuovo foglio di
> calcolo e lo popola con le formule necessarie, inoltre crea una specie
> di tabella (Rating).
>
> Questa tabella è fatta in questo modo: le prime 3 colonne e le prime N
> righe del foglio contengono valori e/o formule.
> Questo Range di elementi li ho anche inseriti in un DatabaseNameRange.
> Vorrei "Sortare" questo NamedRange ogni volta che una qualsiasi cella
> del foglio viene modificata.
>
> via Gui, questo lo ottengo cliccando con il tasto destro sul nome del
> foglio, quindi vado su
> Eventi foglio --> Contenuto Modificato clicco su Macro e scelgo la
> Subroutine che mi interessa far girare.
>
> Fatta a mano, funziona, ma (poiché il foglio nasce ad un preciso
> evento) vorrei fare questa assegnazione via Basic.
>
> Qualcuno ha idea di come potrei fare e / o dove posso trovare questa
> info ?
>
> Grazie
> AS
>
>
> ---
> Questa e-mail è priva di virus e malware perché è attiva la protezione
> avast! Antivirus.
> http://www.avast.com
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>