Neil usa molto i colori nei suoi fogli di lavoro. Sa che può generare un colore basato su un valore RGB numerico (e come spiegato in altri problemi di ExcelTips). Neil vorrebbe fare l’opposto: determinare un valore RGB. Si chiede se ci sia un modo per tornare (tramite funzione o macro)

il valore RGB del colore utilizzato per riempire una cella.

Excel non include una funzione per farlo, ma puoi creare la tua funzione definita dall’utente. La funzione che usi dipende da cosa vuoi che sia effettivamente restituito al tuo foglio di lavoro. Ad esempio, se vuoi che venga restituito il tradizionale codice esadecimale a sei caratteri per i colori RGB, dovresti usare la seguente macro molto semplice:

Function getRGB1(rcell) As String     Dim sColor As String

sColor = Right("000000" & Hex(rcell.Interior.Color), 6)

getRGB1 = Right(sColor, 2) & Mid(sColor, 3, 2) & Left(sColor, 2)

End Function

Questa macro esamina il colore interno di qualsiasi cella a cui fai riferimento, inserisce i valori esadecimali per il colore nell’ordine corretto e restituisce la stringa a Excel. Per utilizzare la funzione è sufficiente richiamarla, nel foglio di lavoro, con una cella referenziata in questo modo:

=getRGB1(B4)

Tuttavia, potresti non volere i tradizionali codici esadecimali per i colori RGB.

Se vuoi ottenere i valori decimali per ciascuno dei colori, la seguente macro restituisce questo:

Function getRGB2(rcell) As String     Dim C As Long     Dim R As Long     Dim G As Long     Dim B As Long

C = rcell.Interior.Color     R = C Mod 256     G = C \ 256 Mod 256     B = C \ 65536 Mod 256     getRGB2 = "R=" & R & ", G=" & G & ", B=" & B End Function

Richiamata allo stesso modo della macro getRGB1, questa versione restituisce una stringa come “R = 255, G = 204, B = 0”. Puoi anche modificare ulteriormente la macro in modo che restituisca un singolo valore, in base a un parametro impostato:

Function getRGB3(rcell As Range, Optional opt As Integer) As Long     Dim C As Long     Dim R As Long     Dim G As Long     Dim B As Long

C = rcell.Interior.Color     R = C Mod 256     G = C \ 256 Mod 256     B = C \ 65536 Mod 256

If opt = 1 Then         getRGB3 = R     ElseIf opt = 2 Then         getRGB3 = G     ElseIf opt = 3 Then         getRGB3 = B     Else         getRGB3 = C     End If End Function

Per usare la macro, aggiungi semplicemente un secondo parametro alla funzione usata nel tuo foglio di lavoro, specificando quello che vuoi:

=getRGB3(B4,1)

Se il secondo parametro è 1, la funzione restituisce solo il valore rosso. Se si specifica un secondo parametro di 2, viene restituito il valore verde e 3 restituisce il valore blu. Qualsiasi altro valore per il secondo parametro (o se lo si omette completamente) restituisce l’intero valore decimale del colore interno.

Se non vuoi seguire la strada della creazione di una macro o se desideri determinare i colori in qualcosa di più del tuo foglio di lavoro Excel, potresti prendere in considerazione un’utilità di terze parti. Uno che sembra interessante è Instant Eyedropper, che è gratuito. Puoi trovare maggiori informazioni a riguardo qui:

http://instant-eyedropper.com

_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 (10179) si applica a Microsoft Excel 97, 2000, 2002 e 2003.

Puoi trovare una versione di questo suggerimento per l’interfaccia a barra multifunzione di Excel (Excel 2007 e versioni successive) qui: