Come da oggetto, cosa devo fare perchè al cambiamento del valore di una determinata cella, parta l'esecuzione di una macro?
Nel file di esempio, quando inserisco un valore in A1 come posso far partire la macro Main?
Come avviare macro al cambiamento di una cella
Come avviare macro al cambiamento di una cella
- Allegati
-
- Senza nome 1.ods
- (11.39 KiB) Scaricato 47 volte
LibreOffice 6.0.7.3
Linux Ubuntu LTS 20.04
Linux Ubuntu LTS 20.04
Re: Come avviare macro al cambiamento di una cella
L'argomento è stato trattato più volte, bastava fare una ricerca
viewtopic.php?t=9959&hilit=contenuto+modificato
viewtopic.php?t=9959&hilit=contenuto+modificato
-------------------
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: Come avviare macro al cambiamento di una cella
Ti ringrazio per la risposta, in realtà avevo provato a cercare nei vecchi thread ma o sono sfortunato o più probabilmente non bravo a cercare.
Comunque sia nel tuo link non ci sono soluzioni al caso che propongo perchè come dicevo la macro deve partire quando modifico A1.
L'evento "contenuto modificato" non è adatto a quello che chiedevo perchè se prima scrivo 99 in A2 e PIPPO in A3 poi metto 10 in A1, la macro chiaramente parte alla prima modifica e non quando modifico A1.
Hai qualche idea per aiutarmi?
Comunque sia nel tuo link non ci sono soluzioni al caso che propongo perchè come dicevo la macro deve partire quando modifico A1.
L'evento "contenuto modificato" non è adatto a quello che chiedevo perchè se prima scrivo 99 in A2 e PIPPO in A3 poi metto 10 in A1, la macro chiaramente parte alla prima modifica e non quando modifico A1.
Hai qualche idea per aiutarmi?
LibreOffice 6.0.7.3
Linux Ubuntu LTS 20.04
Linux Ubuntu LTS 20.04
Re: Come avviare macro al cambiamento di una cella
L'evento "contenuto modificato" è adatto, ma devi controllare che il target sia proprio la cella A1, se è A1 fai quello che devi fare, altrimento esci dalla sub.
Questo è un esempio
Questo è un esempio
Codice: Seleziona tutto
Sub evento(Target)
If NOT Target.supportsService("com.sun.star.sheet.SheetCell") then exit sub
Sh = Target.getSpreadsheet()
rng = sh.getCellRangeByName("A1")
range2 = rng.queryintersection(Target.rangeaddress())
If range2.RangeAddressesAsString = "" Then
Exit Sub
Else
print "cella A1 modificata in " & rng.value
End if
End Sub
-------------------
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: Come avviare macro al cambiamento di una cella
Oppure
Codice: Seleziona tutto
Sub evento1(Target)
If NOT Target.supportsService("com.sun.star.sheet.SheetCell") then exit sub
oConv = ThisComponent.createInstance("com.sun.star.table.CellAddressConversion")
oConv.Address = Target.getCellAddress
If oConv.UserInterfaceRepresentation ="A1" then
print "cella A1 modificata in " & Target.value
End if
-------------------
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: Come avviare macro al cambiamento di una cella
Salve Patel, la tua precisa risposta/e sottolinea come molti eventi sono scatenati da una serie indefinita di oggetti omogenei, sta al codice individuare quello che effettivamente è interessato.
Devo fare una piccola osservazione per le tue macro, usi delle funzioni che non appartengono al mio LibreOffice 7.1.8 (versione Still), come RangeAddressesAsString CellAddressConversion UserInterfaceRepresentation, dove le trovo ?
Non era più semplice e didattico usare la sempre presente proprietà string AbsoluteName e fare un veloce confronto tra stringhe?
Saluti Nicola
Devo fare una piccola osservazione per le tue macro, usi delle funzioni che non appartengono al mio LibreOffice 7.1.8 (versione Still), come RangeAddressesAsString CellAddressConversion UserInterfaceRepresentation, dove le trovo ?
Non era più semplice e didattico usare la sempre presente proprietà string AbsoluteName e fare un veloce confronto tra stringhe?
Saluti Nicola
Nicola con LibreOffice 7.1 (x64) su Windows 11