Caleidoscopio di colori RGB e Cicli For..Next. - dal 04/09/04 pagina vista: volte

Nel voler colorare una cella o un font (carattere) usiamo normalmente nelle istruzioni la loro proprietà ColorIndex, facendo riferimento ad un numero che identifica un colore della palette colori standard di Excel. (in realtà, per una cella, la proprietà ColorIndex è dell'oggetto Interior che appartiene alla cella, o dell'oggetto Font, che anche lui appartiene alla cella ). Due esempi:

  • Worksheets("Foglio1").Range("A1").Interior.ColorIndex = 3 'colora di rosso la cella A1

  • Worksheets("Foglio1").Range("A1").Font.ColorIndex = 5  'colora di blu il font nella cella A1

Comunque sia, con ColorIndex il numero di colori disponibili non è poi tanto elevato. Esiste la possibilità di scegliere tra 16.581.375 colori (16 milioni di colori), utilizzando la Funzione RGB.

Un colore RGB (da Red (rosso), Green (verde), Blu (blu)) è formato da tre numeri, ognuno dei quali va da zero a 255, e che rappresenta la componente rossa del colore R, della componente verde G e della componente blu B, e la sintassi è la seguente:

  • oggetto.Color = RGB(255, 0, 0) ' restituisce il colore rosso, o per meglio esemplificare:

  • Worksheets("Foglio1").Range("A1").Interior.Color = RGB(255, 0, 0)

Come si nota, si sostituisce la sintassi Interior.ColorIndex =  con Interior.Color =  seguito dalla definizione obbligatora RGB(e poi dai tre numeri, separati dalla virgola, che identificano le varie combinazioni dei colori Red, Greeen, Blu) (infatti 255x255x255 da il totale delle combinazioni di colore possibili : 16.581.375).

Usare RGB ci consente di scegliere quindi una gamma colori non ottenibile con ColorIndex. Per familiarizzare con questa Funzione, ho preparato un esercizio in cui approfitto per lavorare con tre cicli For..Next, con la randomizzazione di numeri, in modo da creare una serie di colori casuali. Con i colori randomizzati riempiremo delle celle, in ognuna delle quali oltre al colore, facciamo scrivere anche la combinazione dei tre numeri colore che lo formano. Questo dimostrerà anche un'altra cosa: nessuno di noi riesce a cogliere le sfumature di tutti e 16 milioni di colori: vedremo infatti colori che ci appaiono uguali, quando invece i numeri indicheranno diversità e quindi colore diverso. Questa è un'immagine del programmino preparato e che potrete scaricare:

e questa la routine associata al pulsante "Lanciami":

Sub caleidos()
Dim X As Integer, Y As Integer, Z As Integer
'con queste tre variabili, X, Y e Z 'impostiamo il numero da randomizzare che verrà assegnato alle tre variabili uno, due, tre, 'che formeranno quindi gli argomenti della Funzione RGB, e cioè un colore
X = 255
Y = 255
Z = 255
For m = 1 To 10
'questo ciclo crea un effetto movimento modificando il colore nelle celle 'ad ogni ciclo. Potrete incrementare il limite superiore (attenzione a non ipnotizzarvi), 'oppure toglierlo, in questo caso andrà tolto anche l'ultimo Next m

For r = 1 To 20
 'inizializziamo due cicli interni al primo, e con r incrementiamo ad ogni 'ciclo di r il numero di riga (mi sono fermato a 20), con c (sotto) scaliamo le colonne dalla '1 (la A) alla 10 (la J).
For c = 1 To 10

Randomize
uno = Int(X * Rnd) + 1
'con uno otteniamo un numero compre tra 1 e 255
due = Int(Y * Rnd) + 1 
'con due otteniamo un numero compre tra 1 e 255
tre = Int(Z * Rnd) + 1 
'con tre otteniamo un numero compre tra 1 e 255
Cells(r, c).Interior.Color = RGB(uno, due, tre)
'si assegna il colore RGB alla cella il quel 'momento ciclata, e si scrive nella cella (sotto) il numero che compone il colore cella
Cells(r, c).Value = uno & "-" & due & "-" & tre
Next: Next
Next m
End Sub

Divertitevi a variare i valori assegnati a X Y o Z per vedere le combinazioni se limiterete un colore rispetto agli altri. Potrete usare il programma per scegliere un colore che vi piace, da usarsi poi in altre istruzioni, basterà prendere la combinazione dei numeri del colore.

File consultabile e scaricabile    Caleidos2000.zip    15  Kb

Buon lavoro.

prelevato sul sito www.ennius.altervista.org