Macro cambio sfondo cella

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
bobo779256
Messaggi: 161
Iscritto il: mercoledì 2 maggio 2012, 16:05

Macro cambio sfondo cella

Messaggio da bobo779256 »

Ho una macro con questo codice, associata all'evento foglio 'Selezione modificata'

Codice: Seleziona tutto

sub coloreSfondo
Dim Doc As Object
Doc = StarDesktop.CurrentComponent
NomeFoglio = Doc.Sheets.getByName("Foglio1")
colore=NomeFoglio.getCellRangeByName("D10").CellBackColor
NomeFoglio.getCellRangeByName("D20").CellBackColor=colore
end sub
Questi comandi leggono lo sfondo della cella D10 così che la cella D20 abbia poi lo stesso sfondo

Lo scopo è: se cambio sfondo a D10 anche D20 deve avere lo stesso sfondo
Funziona, ma solo se 'esco' dalla cella D10, cioè cambio sfondo a D10-resto li col puntatore-non succede nulla-esco da D10 c'è la modifica a D20
Come posso rimanere in D10 ed avere comunque la modifica sfondo? Che ne so... selezionando una cella e poi tornando a D10 con un comando nella macro

Grazie

Non allego un file di esempio perchè mi sembra si capisca lo stesso
OpenOffice 4.1.13 su Windows 10 PRO 64bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro cambio sfondo cella

Messaggio da unlucky83 »

bobo779256 ha scritto: Che ne so... selezionando una cella e poi tornando a D10 con un comando nella macro
Il punto è che la macro probabilmente è collegata all'evento del foglio " Selezione modificata". Finchè non clicchi fuori da D10 la macro nemmeno viene eseguita perchè ancora deve verificarsi l'evento "Selezione modificata". Quindi un comando nella macro non risolverebbe nulla.
Tra gli eventi eventi del foglio non c'è un'alternativa valida.
Con macro si dovrebbe ricorrere a qualcosa di molto più complesso, tipo un listener sul movimento del mouse o associato alla cella per avere una macro che si avvii quando modifichi solamente lo sfondo della cella.
Mi chiedo se non sia possibile affrontare il problema cambiando la logica del foglio. Per caso lo sfondo di D10 è legato a qualche risultato specifico di una formula o al valore di una certa cella? Oppure modificare lo sfondo di D10 è un'esecuzione del tutto indipendente e svincolata dagli altri dati del foglio?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
bobo779256
Messaggi: 161
Iscritto il: mercoledì 2 maggio 2012, 16:05

Re: Macro cambio sfondo cella

Messaggio da bobo779256 »

Lo sfondo che cambia è solo visuale, cioè se cambio D10 voglio mettere in evidenza in quale altre celle influirà il conteggio finale

Mi rendo conto che, col codice postato ed un'eventuale spostamento di selezione cella, esempio da D10 a D12 e ritorno a D10, si entra in un loop che blocca tutto

Se registro ed eseguo singolarmente una macro per spostare il focus da una cella ad un'altra raggiungo lo scopo, ma non so come associarla poi al cambio di sfondo

Vabbè, mi tengo le formattazioni condizionali classiche se non si trova qualcos'altro...
OpenOffice 4.1.13 su Windows 10 PRO 64bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro cambio sfondo cella

Messaggio da unlucky83 »

Ma il punto è come avvii là macro del registratore di macro per cambiare il focus. Al momento usi l’evento del foglio che scatta quando cambi la selezione.
In poche parole abbiamo una causa è un effetto. L’attuale macro sia avvia (effetto) per la causa “selezione modificata”. Là macro che dovrebbe stare a monte di questa è che pensi risolva il problema cambiando il focus (effetto) si dovrebbe avviare quando si verifica cosa? Non abbiamo un loop, qui abbiamo un cane che tenta di mordersi la coda. Al momento non ho una soluzione.
Però visto che dici
Vabbè, mi tengo le formattazioni condizionali classiche se non si trova qualcos'altro...
, si potrebbe associare la macro all'evento "foglio modificato" e aggiungere la condizione che useresti per la formattazione condizionale all'interno della macro.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
bobo779256
Messaggi: 161
Iscritto il: mercoledì 2 maggio 2012, 16:05

Re: Macro cambio sfondo cella

Messaggio da bobo779256 »

La vedo complicata, non sono così ferrato...

Ma ho trovato un escamotage (si scrive così? boh...[e ssssi... sono tante le cose che non so :mrgreen: ]) più o meno come l'altro post che avevo messo qualche giorno fa
e cioè ho 'circondato' la cella D10 con dei campi di controllo caselle di testo (ma si può metterne anche di altro tipo) in modo che siano seminascosti
ed associata la macro all'evento 'mouse dentro' di questi campi di controllo
così appena muovo il mouse fuori da D10 si applica il cambio sfondo a D20, e a tutte le celle che devono avere lo stesso risultato

Poco elegante come soluzione ma funzionale
OpenOffice 4.1.13 su Windows 10 PRO 64bit
Rispondi