Rollino i tamburi

Un trucco affascinante, in Excel. Naturalmente non è mio :) ma lo trovo così intrigante che ho deciso di riportarlo qui soprattutto per mia futura memoria. Si tratta di intercettare l'effetto "roll over" su una cella (che per esempio HTML mette a disposizione). Basta passare il mouse su una cella bersaglio e si scatena l'evento "mouse over". Si badi bene: nessun evento SelectionChange, nessun evento Change; il semplice passaggio del mouse sulla cella desiderata e voilà, il trucco appare. Tutto è nato da una ricerca su come modificare il contenuto di una cella da parte di una UDF... impossibile da realizzarsi normalmente ma ecco che (magari volutamente) i programmatori di Excel ci regalano questa possibilità. Basta sfruttare un semplice collegamento ipertestuale, passando come argomento non un indirizzo web ma una funzione UDF. Pare che il semplice passaggio del mouse sopra una cella contenente un hyperlink, costringa Excel a valutarne il contenuto e quindi a eseguire la funzione associata. Le possibilità per sfruttare questo trick sono tante: per visualizzare informazioni rapide per l'utente, come i e meglio dei commenti; per eseguire una funzione quando un utente posiziona il mouse su una zona specifica, come e meglio del click nella cella; per effettuare simpatici effetti grafici, ad esempio un refresh dinamico di un grafico in base a valori di serie diverse.
L'Hyperlink come funzione di Excel funziona così: =COLLEGAM.IPERTESTUALE(posizione_collegamento, [nome_collegamento]) posizione_collegamento - è l'indirizzo di destinazione del collegamento ipertestuale. Questo può essere una pagina web (ad esempio "http://www.google.com") o un file sul computer. nome_collegamento - parametro facoltativo che fornisce una didascalia per il collegamento ipertestuale. Se si lascia vuoto il campo, verrà visualizzato l'indirizzo del parametro precedente.
Per fare un esempio, è necessario creare una funzione definita dall'utente (UDF), che verrà eseguita quando l'evento rollover viene scatenato.
Public Function roll_over()
    Sheets("Foglio1").Range("A2").Value = "Roll over!"
End Function

Strano no? Di solito le UDF non hanno il permesso di modificare i valori in altre celle. Tuttavia, questa limitazione sparisce quando la funzione viene chiamata da un collegamento ipertestuale!
Ora modifichiamo la cella A1 del Foglio1 e introduciamo questa formula: =COLLEGAM.IPERTESTUALE(roll_over(), "Clicca qui")

Dopo aver premuto Invio, otteniamo un errore: #VALORE! che è in realtà piuttosto deludente, ma possiamo ignorarlo. Ora semplicemente passiamo il mouse sopra la cella A1 e... magia! nella cella A2 compare la scritta "Roll over!".

Risolviamo il problema del valore di errore #VALORE! Basta riscrivere la funzione nella cella come segue: =RIPETI("Up";VAL.ERRORE(COLLEG.IPERTESTUALE(roll_over();"")))

Sviluppi interessanti: - funzioni differenziate associate a distinti collegamenti ipertestuali per ottenere effetti diversi passando su celle diverse; - combinazione con formattazione condizionale che cambia colore a certe celle passando sopra altre celle; - funzioni parametrizzate per evitare di scrivere funzioni diverse!
Interessante no? Dicevo all'inizio che non è farina del mio sacco... Ecco tutti i link di riferimento:
http://chandoo.org/wp/2011/07/20/interactive-dashboard-using-hyperlinks/
http://optionexplicitvba.blogspot.hu/2011/04/rollover-b8-ov1.html

posted @ venerdì 1 febbraio 2013 20:24

Print

Comments on this entry:

No comments posted yet.

Your comment:



 (will not be displayed)


 
 
 
Please add 4 and 2 and type the answer here:
 

Live Comment Preview: