Beatrice ha un foglio di lavoro con due righe di intestazione bloccate e una colonna bloccata (Blocca riquadri). Può quindi scorrere la pagina aggiungendo dati settimana dopo settimana. I nomi e i totali parziali sono fissi a sinistra, le date della settimana in alto. Soprattutto, nella prima riga congelata, Beatrice ha un bel titolo di fantasia che descrive la cartella di lavoro. Sta cercando un modo per far “fluttuare” il suo titolo (quello nella prima riga) in modo che quando scorre la pagina il titolo non scompaia oltre il bordo del foglio di lavoro visibile.
Il modo più semplice per farlo è assicurarsi che il titolo sia nella cella A1. Poiché hai una colonna e due righe bloccate, mentre scorri verso destra, la cella A1, contenente il titolo, sarà sempre visibile sullo schermo (funziona in modo soddisfacente solo se l’intero titolo rientra nella cella A1, senza “riversarsi” nella cella B1 o oltre).
Se vuoi qualcosa di un po’ più sofisticato con il tuo titolo, devi lavorare un po’ con le caselle di testo e le macro. Se inserisci il titolo in una casella di testo posizionata nella prima riga, puoi utilizzare alcune macro per assicurarti che la casella di testo sia sempre centrata sullo schermo in quella riga.
Assumiamo, al fine di questo esempio, che la casella di testo contenente il titolo sia denominata “CasellaTitolo”. Mentre scorri a sinistra e a destra nel foglio di lavoro, una macro potrebbe verificare automaticamente che il bordo sinistro della casella di testo sia sempre uguale al bordo sinistro dell’area dello schermo visibile. Il codice seguente deve essere aggiunto al codice del foglio di lavoro contenente la casella di testo:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Questa macro, poiché fa parte del codice del foglio di lavoro, verrà eseguita ogni volta che la selezione viene modificata nel foglio di lavoro. Pertanto, quando si utilizzano i tasti freccia per spostarsi a sinistra o a destra, si utilizzano i tasti di tabulazione o si seleziona una cella con il mouse, la macro verrà eseguita e si assicurerà che il bordo sinistro della casella di testo e l’area visibile corrispondano sempre.
Questa macro non si attiverà quando scorrerai a sinistra e a destra utilizzando la barra di scorrimento orizzontale nella parte inferiore dello schermo. Non esiste alcun “evento di scorrimento” che venga attivato automaticamente quando vengono utilizzate le barre di scorrimento. Fino a quando non viene effettuata una selezione da qualche parte all’interno del nuovo intervallo visibile, attivando così l’evento SelectionChange, la posizione della casella di testo non verrà spostata.
L’unica soluzione a questa limitazione consiste nell’utilizzare le funzionalità di timer di Visual Basic per aggiornare periodicamente la casella di testo. Il codice seguente lo fa ogni secondo, ma puoi regolarlo in modo che venga eseguito meno spesso, se lo desideri. Questo codice va aggiunto a un normale modulo VBA:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
E quest’altro va invece aggiunto all’oggetto cartella di lavoro per avviare il timer quando la cartella di lavoro viene aperta per la prima volta:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Se si utilizza l’approccio basato su timer per posizionare la casella di testo, non sarà necessario utilizzare quello legato all’evento SelectionChange. La versione con il timer sistema semplicemente il titolo dopo ogni intervallo.
C’è un ulteriore “svantaggio” in entrambe le tecniche basate su macro oltre all’eventuale lentezza introdotta dal codice in esecuzione: ogni volta che il codice viene eseguito viene cancellato lo “stack di annullamento”. Ciò significa che non sarai in grado di “annullare” (Ctrl + Z) le modifiche apportate alla cartella di lavoro, se ne avessi bisogno.