Excel utilizza una tavolozza di colori composta da 56 colori. Puoi vedere questi colori se visualizzi la scheda Motivi della finestra di dialogo Formato celle.

Quando crei macro in VBA, potresti voler fare riferimento a questi colori, per nome, usando costanti.

Sfortunatamente, il VBA di Excel non ha costanti definite per ciascuno dei 56 colori nella tavolozza. Gli unici colori definiti, per nome, sono membri della classe ColorConstants e ci sono otto membri della classe: vbBlack, vbWhite, vbRed, vbGreen, vbBlue, vbYellow, vbMagenta e vbCyan.

In VBA è possibile utilizzare la proprietà ColorIndex per definire quale colore si desidera utilizzare dalla tavolozza di Excel. Il problema è che ColorIndex non è un colore; è un indice nella tavolozza. Pertanto, un ColorIndex di 1 è il primo colore nella tavolozza, 2 è il secondo e così via. Puoi vederlo in azione guardando il codice di esempio a questo URL:

http://www.ozgrid.com/VBA/ReturnCellColor.htm

Questo codice esamina la proprietà ColorIndex per una cella e restituisce un nome di colore. Il nome restituito, tuttavia, non è una costante per il colore; è solo una descrizione di quale colore sembra essere la tavolozza in quell’indice.

Se vuoi impostare il colore di una cella, dovresti effettivamente usare la proprietà Color. Questa proprietà consente di utilizzare le otto costanti di colore VBA menzionate in precedenza. Accade così che se usi questa proprietà Color per impostare il colore interno di una cella, scoprirai che gli otto colori nominati corrispondono ai valori ColorIndex da 1 a 8. La seguente macro lo illustra bene:

Sub CheckColors()

Dim arr8Colors As Variant     Dim i As Integer

arr8Colors = Array( _       vbBlack, vbWhite, vbRed, vbGreen, _       vbBlue, vbYellow, vbMagenta, vbCyan)

For i = 0 To 7         Selection.Offset(i, 0).Interior.Color = arr8Colors(i)

Selection.Offset(i, 1).Value = Selection.Offset(i, 0).Interior.ColorIndex     Next i End Sub

Questa corrispondenza per i primi otto valori tra Color e ColorIndex dovrebbe essere presa solo come un artefatto della storia, che risale ai giorni in cui Excel consentiva di utilizzare solo otto colori, gli otto colori definiti con costanti VBA. Se vuoi specificare un altro colore per una cella, dovresti usare la funzione RGB per specificare la proprietà Color, come mostrato qui:

Selection.Interior.Color = RGB(128, 64, 255)

La funzione RGB consente di specificare i componenti rosso, verde e blu di qualsiasi colore. Ogni componente può avere un valore compreso tra 0 e 255.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (2778) si applica a Microsoft Excel 97, 2000, 2002 e 2003.