[Risolto] Pulsante attiva/disattiva evento "selezione modificata" del Foglio
[Risolto] Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Salve a tutti. Guardando tra i vari post in questo Forum nonché in altre sedi ho visto tematiche concernenti macro collegate al cosiddetto evento “Selezione modificata” del Foglio che non mi hanno comunque aiutato a risolvere i dubbi. A questo riguardo mi sarebbe molto utile avere un aiuto riguardo l'attivazione e disattivazione dell'evento sopracitato tramite un pulsante macro direttamente sul foglio stesso,funzione che considero molto utile per chiunque. Prendo ad esempio questo file (il mio allegato) che il bravissimo "Unlucky83" aveva inserito nel topic dell'utente "Nando69" circa 2 anni fa (qui il link) :
https://forum.openoffice.org/it/forum/v ... hp?t=11517
e che trattava l'argomento su come "Evidenziare in automatico celle con lo stesso colore". La macro di "Unlucky83" era appunto collegata all'evento “Selezione modificata” sul Foglio1. Nel file ho inserito giusto un pulsante (non ancora collegata ad alcun codice ovviamente) che potrebbe comodamente attivarmi o disattivarmi la macro ogni volta che voglio,cliccando semplicemente sopra il pulsante. Includo anche una foto del paragrafo specifico dov'era posto il file. Una buona serata
https://forum.openoffice.org/it/forum/v ... hp?t=11517
e che trattava l'argomento su come "Evidenziare in automatico celle con lo stesso colore". La macro di "Unlucky83" era appunto collegata all'evento “Selezione modificata” sul Foglio1. Nel file ho inserito giusto un pulsante (non ancora collegata ad alcun codice ovviamente) che potrebbe comodamente attivarmi o disattivarmi la macro ogni volta che voglio,cliccando semplicemente sopra il pulsante. Includo anche una foto del paragrafo specifico dov'era posto il file. Una buona serata
- Allegati
-
- 26 novembre.jpg (62.27 KiB) Visto 1308 volte
-
- Prova2.ods
- (11.72 KiB) Scaricato 63 volte
Ultima modifica di Westham il martedì 28 novembre 2023, 15:46, modificato 1 volta in totale.
Libre Office 7.3.2.2
Re: Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Non credo si possa fare, ma se riesci a trovare una soluzione sei pregato di condividerla.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Re: Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Si può fare, problema posto pure su altro forum dove è stata ricevuta risposta.
https://ask.libreoffice.org/t/pulsante- ... io/98612/9
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Di nuovo buongiorno. Sono andato sul link consigliato da Gaetano,ho fatto una sorta di copia e incolla della sua macro e l'ho applicata all'interno del file "Prova2" modificando il codice in questo modo e per quello che sono riuscito a capire.
sub Macro(Target)
If Target.Source.Model.Label = "Disattivata" Then
SMacro = "vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document"
Target.Source.Model.Label = "Attivata"
elseif Target.Source.Model.Label = "Attivata" Then
SMacro = ""
Target.Source.Model.Label = "Disattivata"
End if
dim Prop(1) as new com.sun.star.beans.PropertyValue
Prop(0).name = "EventType"
Prop(0).value = "Script"
Prop(1).name = "Script"
Prop(1).value = SMacro
thiscomponent.sheets.getByName("Foglio1").Events.replaceByName("OnSelect", Prop())
end Sub
sub Main
Doc=ThisComponent
oSh=Doc.Sheets(0)
oCell1=oSh.getcellRangeByName("A4")
oCell2=oSh.getcellRangeByName("A1")
If oCell1.CellBackColor<>oCell2.CellBackColor Then
oCell2.CellBackColor=oCell1.CellBackColor
End If
end sub
Ho salvato il tutto ma funziona solo a metà,nel senso che cliccando il pulsante una prima volta,mi cancella in pratica la selezione modificata evento Foglio. Cliccando poi una seconda volta il pulsante,la dicitura nella selezione modificata "Standard.Module1.Main" non mi compare più e chiaramente la macro non funziona. Dov'è l'errore nella digitazione del codice ? Riallego file aggiornato
sub Macro(Target)
If Target.Source.Model.Label = "Disattivata" Then
SMacro = "vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document"
Target.Source.Model.Label = "Attivata"
elseif Target.Source.Model.Label = "Attivata" Then
SMacro = ""
Target.Source.Model.Label = "Disattivata"
End if
dim Prop(1) as new com.sun.star.beans.PropertyValue
Prop(0).name = "EventType"
Prop(0).value = "Script"
Prop(1).name = "Script"
Prop(1).value = SMacro
thiscomponent.sheets.getByName("Foglio1").Events.replaceByName("OnSelect", Prop())
end Sub
sub Main
Doc=ThisComponent
oSh=Doc.Sheets(0)
oCell1=oSh.getcellRangeByName("A4")
oCell2=oSh.getcellRangeByName("A1")
If oCell1.CellBackColor<>oCell2.CellBackColor Then
oCell2.CellBackColor=oCell1.CellBackColor
End If
end sub
Ho salvato il tutto ma funziona solo a metà,nel senso che cliccando il pulsante una prima volta,mi cancella in pratica la selezione modificata evento Foglio. Cliccando poi una seconda volta il pulsante,la dicitura nella selezione modificata "Standard.Module1.Main" non mi compare più e chiaramente la macro non funziona. Dov'è l'errore nella digitazione del codice ? Riallego file aggiornato
- Allegati
-
- Prova2.ods
- (11.98 KiB) Scaricato 57 volte
Libre Office 7.3.2.2
Re: Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Ovvio che non ti funzioni, la didascalia del pulsante deve essere "Attivata" o "Disattivata" con didascalia diversa per come ho scritto la macro l'evento viene annullato.
Si può cambiare in questo modo, ma non ha senso in quanto la didascalia deve essere quella per funzionare, puoi cambiare la label ma devi modificare pure la macro.
Si può cambiare in questo modo, ma non ha senso in quanto la didascalia deve essere quella per funzionare, puoi cambiare la label ma devi modificare pure la macro.
Codice: Seleziona tutto
sub Macro(Target)
Slabel = Target.Source.Model.Label
If Slabel = "Disattivata" Then
SMacro = "vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document"
Target.Source.Model.Label = "Attivata"
Elseif Slabel = "Attivata" Then
SMacro = ""
Target.Source.Model.Label = "Disattivata"
End if
If Slabel = "Disattivata" Or Slabel = "Attivata" Then
dim Prop(1) as new com.sun.star.beans.PropertyValue
Prop(0).name = "EventType"
Prop(0).value = "Script"
Prop(1).name = "Script"
Prop(1).value = SMacro
thiscomponent.sheets.getByName("Foglio1").Events.replaceByName("OnSelect", Prop())
End If
end Sub- Allegati
-
- Prova2.ods
- (11 KiB) Scaricato 60 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Pulsante attiva/disattiva evento "selezione modificata" del Foglio
E' tutto perfettamente chiaro ora. Grazie,metto [Risolto]
Libre Office 7.3.2.2
Re: [Risolto] Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Un sistema più semplice e banale è inserire una verifica all'inizio della tua macro Main cioè quella da attivare o disattivare dove si va a controllare il contenuto di una cella o la didascalia di un pulsante o lo stato di una ceck-box, se la cella contiene SI o la ceck-box è attivata allora la macro prosegue altrimenti la macro esce e non succede nulla.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: [Risolto] Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Ciao. Riguardo questo tuo ultimo post,se vuoi farmi un esempio pratico (con file incluso) per me sarà più facile capire. Grazie
Libre Office 7.3.2.2
Re: [Risolto] Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Ti allego piccolo esempio, ho lasciato solo la macro Main, fin quando la cella E1 sarà NO la macro non verrà attivata, per esattezza verrà sempre attivata ma non proseguirà fino alla fine.
Per la macro proseguire e fare quello per cui è stata scritta devi cambiare la cella E1 in SI, al posto del SI/NO sulla cella puoi usare la didascalia di un pulsante o lo stato ON/OFF di una casella di controllo ma in questi casi la macro da scrivere è diversa e meno semplice in quanto devi fare riferimento a questi oggetti presenti sul foglio.
Per la macro proseguire e fare quello per cui è stata scritta devi cambiare la cella E1 in SI, al posto del SI/NO sulla cella puoi usare la didascalia di un pulsante o lo stato ON/OFF di una casella di controllo ma in questi casi la macro da scrivere è diversa e meno semplice in quanto devi fare riferimento a questi oggetti presenti sul foglio.
- Allegati
-
- Prova2 (1).ods
- (10.71 KiB) Scaricato 61 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: [Risolto] Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Ciao di nuovo. Ho approntato la modifica nel modo che puoi vedere sul file da me aggiornato. Pare funzioni perfettamente. Dimmi per favore se il codice della macro va bene così come l'ho impostato
- Allegati
-
- 29 novembre.ods
- (11.73 KiB) Scaricato 64 volte
Ultima modifica di Westham il mercoledì 29 novembre 2023, 17:08, modificato 1 volta in totale.
Libre Office 7.3.2.2
Re: [Risolto] Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Se usi la cella E1 non necessiti di alcun pulsante e nemmeno della macro chiamata "Macro", ti basta come fatto nel mio file.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: [Risolto] Pulsante attiva/disattiva evento "selezione modificata" del Foglio
Capisco ma era per non stare sempre lì a cambiare denominazione alla cella E1. Col pulsante è tutto più comodo e veloce. Comunque grazie mille. Gentilissimo come sempre
Libre Office 7.3.2.2

