Lo Scrolling.    (15/06/03)

Con il termine Scroll si identifica un metodo che genera l'evento di spostare un oggetto a video. Parliamo del Foglio di lavoro con le sue righe e colonne, e dell'azione che compiamo quando agiamo sulle barre di scorrimento verticale e/o orizzontale. Operazione frequentissima che tutti noi eseguiamo per raggiungere determinate zone dati del nostro foglio di lavoro. L'argomento Scroll è piuttosto ampio, ma ci occuperemo solo di alcuni comandi che tramite vba, ci consentono scorrimenti sul foglio di lavoro. L'oggetto predefinito di cui lo Scroll fa parte, è l'oggetto Window (finestra). Ricordo solo che i nostri fogli possiedono un indice riga (il numero che vediamo all'estrema sinistra, da 1 a 65536) ed un indice colonna (da 1 a 256) e che di default viene visualizzato con lettere dell'alfabeto: la A è la colonna numero 1, la B è la numero 2, ecc.ecc.

  • SmallScroll  -  Esegue uno scorrimento per righe o per colonne. Nell'istruzione basta indicare il numero di  righe di cui vogliamo spostarci ogni volta. Questo esempio fa scorrere il contenuto della finestra attiva di Foglio1 di tre righe verso il basso (down). Gi altri argomenti per la direzione in cui spostarsi sono: Up (verso l'alto), ToRight (verso destra), ToLeft (verso sinistra). Nessuno di questi argomenti può essere rappresentato da un numero negativo.

    Worksheets("Foglio1").Activate
    ActiveWindow.SmallScroll down:=3

  • LargeScroll  -  Esegue uno scorrimento per pagine. Le direzioni per spostarsi sono uguali a SmallScroll. (per pagina si intende il formato di una pagina A4, corrispondente in visualizzazione standard 800x600 e con altezza righe di default, a circa 63 rige). Anche in questo caso un numero identificherà di quante pagine ci vorremo spostare. Questo esempio fa scorrere il contenuto della finestra attiva di Foglio1 di tre pagine verso il basso.

    Worksheets("Foglio1").Activate
    ActiveWindow.LargeScroll down:=3

Ma i metodi su cui voglio puntare l'attenzione sono due: ScrollColumn e ScrollRow - entrambi eseguono uno scorrimento per colonna o per riga, indicando il relativo numero, e posizionando la colonna o la riga chiamata nell'angolo superiore sinistro del foglio di lavoro, cioè all'inizio foglio. Questo ci consente di portare in primo piano una zona del foglio di lavoro, per poterci lavorare o consultarla. Questa pratica ci consente di disporre sullo stesso foglio, più tabelle oppure più zone di calcolo, con il vantaggio di non ricorrere ad altri fogli per i riferimenti alle varie celle o zone, con il beneficio che eviteremo malintesi nelle istruzioni oltre a scrivere di meno, in quanto lavorando sullo stesso foglio, basterà il semplice riferimento alla cella o ad una zona (identificate anche tramite l'assegnazione di un nome) perchè Excel capisca che si sta parlando di cella o zona dello stesso foglio, ed esegua.  Ma vediamo le due proprietà :

  • ScrollColumn  -  Restituisce o imposta il numero della colonna più a sinistra nel riquadro o nella finestra.. Cioè il numero (indice) della cella chiamata verrà posizionato in alto a sinistra (dove di solito vediamo la cella A1). Se la finestra è divisa, la proprietà ScrollColumn dell'oggetto Window si riferisce al riquadro superiore sinistro. Se i riquadri sono bloccati, la proprietà ScrollColumn dell'oggetto Window esclude le aree bloccate. Questo esempio sposta la colonna 3  ( la C ) in modo da essere quella più a sinistra nella finestra.

    Worksheets("Foglio1").Activate
    ActiveWindow.ScrollColumn = 3

  • ScrollRow -  Restituisce o imposta il numero della riga che viene visualizzata nella parte superiore del riquadro o della finestra. Cioè il numero (indice) della riga chiamata verrà posizionato al limite superiore del foglio (dove di solito sta la riga 1). Se la finestra è divisa, la proprietà ScrollRow dell'oggetto Window si riferisce al riquadro superiore sinistro. Se i riquadri sono bloccati, la proprietà ScrollRow dell'oggetto Window esclude le aree bloccate. Questo esempio sposta la riga 10 nella parte superiore della finestra.

    Worksheets("Foglio1").Activate
    ActiveWindow.ScrollRow = 10

Appare evidente, almeno lo spero, che usando entrambe queste due ultime proprietà nella stessa istruzione, potremo portare in primo piano tabelle poste in aree del foglio che di solito non usiamo. In questo esempio sotto, posizioniamo nell'angolo superiore sinistro (al posto della A1) la cella Q115 che sarà la cella di inizio di una tabella (per esempio) di dati:

  • Worksheets("Foglio1").Activate
    ActiveWindow.ScrollRow = 115
    ActiveWindow.ScrollColumn = 17

In realtà, trovandoci sullo stesso foglio (per i più attenti le istruzioni viste ci consentono di "mirare" a qualunque zona di qualunque foglio nella nostra cartella, basta cambiare il numero del foglio), non sarà necessario scrivere la prima riga dell'istruzione, e come è scritta sotto andrà bene lo stesso:

  • ActiveWindow.ScrollRow = 115
    ActiveWindow.ScrollColumn = 17

Come usare queste istruzioni ? Suggerisco di usare "Blocca riquadri" (dal menù Finestra/Bocca riquadri) e di bloccare le prime 2 o tre righe; in questa zona che resterà fissa a schermo, inseriremo tanti pulsanti collegati ad altrettante macro, ognuna destinata ad una determinata zona, più una, importante, per ritornare all'ovile, cioè alla cella di inizio foglio.

Se riterrete utile, potrete scaricare questo file, che ho iniziato, ma non completato, per la gestione di Corsi Nuoto. L'unico foglio semi completo riguarda i turni del "Nuoto Ragazzi". Chi vorrà potrà portarlo avanti o modificarlo, sono presenti comunque numerose routine che aiuteranno a capire, compreso un ciclo che evidenzia gli "scaduti" se la data odierna del giorno è superiore alla data di fine corso e la cella "prezzo" non contiene valori.(pulsante "check"). Sotto due immagini:


 


file consultabile e scaricabile :   Generale corsi.zip    83 Kb
 

 

Buon lvoro.

prelevato sul sito http://ennius.interfree.it