Funzione Colorazione celle

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
piddu04
00venerdì 10 febbraio 2017 09:30
Ciao a tutti,

innanzitutto mi presento in quanto mi sono appena iscritto al forum.
Mi chiamo Piero e sono un appassionato di Excel che uso frequentemente per lavoro.
Avrei la necessità di creare una funzione (possibilmente non una macro) per colorare una determinata cella mediante i valori RGP impostati su altre 3 celle.
Grazie
Ciao
p
alfrimpa
00venerdì 10 febbraio 2017 09:48
Ciao Piero

Le funzioni non compiono azioni (e il colorare è un'azione) ma restituiscono risultati.

Per fare quello che chiedi occorre quindi una macro; allega un piccolo file di esempio spiegando quello che vuoi fare/ottenere
alfrimpa
00venerdì 10 febbraio 2017 10:52
Comunque giusto per fare un esempio da B1 a B3 metti i valori RGB e lancia questa macro che colorerà la cella A1

vb
Sub Colora()
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = Range("B1").Value
g = Range("B2").Value
b = Range("B3").Value
Worksheets("Foglio1").Range("A1").Interior.Color = RGB(r, g, b)
End Sub
piddu04
00venerdì 10 febbraio 2017 12:47
Ciao Alfredo,

è proprio il tipo di risultato che mi serve, mi sarebbe piaciuto poterlo inserire come funzione ma pace. Piu' che altro avrei bisogno che venga fatto a cascata su tutte le celle.

ho dovuto cambiarlo come segue per esigenze di formato ma non so come farglielo fare in cascata (per intenderci per le celle da S,T,U6 a S,T,Un e colorare la cella Vn).


Sub Colora()
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = Range("S6").Value
g = Range("T6").Value
b = Range("U6").Value
Worksheets("Cartella colori - CLIENTI").Range("V6").Interior.Color = RGB(r, g, b)
End Sub

piddu04
00venerdì 10 febbraio 2017 12:47
Comunque grazie davvero!
ciao
p
piddu04
00venerdì 10 febbraio 2017 12:58
Un'ultima cosa. la routine dovrebbe essere dinamica, nel senso che se modifico le celle (aggiungo sposto o tolgo) anche la macro si modifichi di conseguenza o per lo meno sappia che deve partire sempre da una determinata cella in base al contenuto di altre celle.

Allego il file che sto cercando di creare per dare piu' informazioni.

Grazie
ciao
p
alfrimpa
00venerdì 10 febbraio 2017 14:31
Ciao Piero

Dal file che hai allegato non ho capito nulla.

Nella macro che vi è inserita

vb
Sub Colora2()
 Dim r As Integer
Dim g As Integer
 Dim b As Integer
 r = Range("S6").Value
 g = Range("T6").Value
 b = Range("U6").Value
 Worksheets("Cartella colori - CLIENTI").Range("V6").Interior.Color = RGB(r, g, b)
 End Sub


Il foglio "Cartella colori - CLIENTI" non esiste nel file.

Inoltre nelle celle S6, T6 e U6 ci sono dei valori decimali che non credo vadano bene per la funzione RGB.

Puoi essere più chiaro?
piddu04
00venerdì 10 febbraio 2017 15:07
corretto... il file che ho allegato è un estratto di quello che sto utilizzando ma mi sa che mi sono dimenticato di cambiare i nomi.

nel file allegato i parametri RGB si trovano nelle colonne S T ed U.
Io vorrei che le celle della colonna V siano colorate in automatico sulla base appunto dei valori RGB delle colonne S T U. per evitare di dover fare una SUB per ogni riga, vorrei che la funzione partisse in automatico dalla riga 6 fino alla riga n. Inoltre vorrei che, nel momento in cui sposto le celle RGB la macro funzioni allo stesso modo. Penso sia piuttosto semplice indicizzando sia la lettura dei valori RGB che la colorazione delle celle ma sinceramente non so come farla.

Grazie
ciao
p
piddu04
00venerdì 10 febbraio 2017 15:10
la riallego corretta
alfrimpa
00venerdì 10 febbraio 2017 15:13
Piero il file che hai allegato è vuoto.
piddu04
00venerdì 10 febbraio 2017 15:26
E' strano... se io lo scarico è tutto a posto...
Occhio che è pieno dalla colonna O in poi. le colonne precedenti le ho cancellate perché non hanno alcun valore per questa richiesta.

Puoi riverificare
p
alfrimpa
00venerdì 10 febbraio 2017 15:28
Oh scusami non avevo visto.

Piuttosto sei sicuro che i valori RGB presenti nelle colonne S, T ed U siano corretti?

Io non ho mai visto valori RGB con le virgole ed inoltre ci sono valori negativi sicuramente non ammessi dalla funzione RGB.
alfrimpa
00venerdì 10 febbraio 2017 15:44
Comunque prova questa

vb
Sub colora()
Dim r As Double
Dim g As Double
Dim b As Double
Dim ur As Long
Dim rng As Range
Dim cel As Range
On Error Resume Next
ur = Cells(Rows.Count, "s").End(xlUp).Row
Set rng = Range("V5:V" & ur)
For Each cel In rng
    r = cel.Offset(0, -3).Value
    g = cel.Offset(0, -2).Value
    b = cel.Offset(0, -1).Value
    cel.Interior.Color = RGB(r, g, b)
Next cel
End Sub
piddu04
00venerdì 10 febbraio 2017 15:44
In effetti i valori sono ricavati da formule che possono restituire anche numeri non interi. Ho visto che comunque alla macro non da particolarmente fastidio la cosa, probabilmente nel momento in cui si inserisce un valore non intero non considera i valori decimali... potrei semplicemente prendere solo la parte intera della formula ma in questo momento è davvero il meno.

Ciao

p
piddu04
00venerdì 10 febbraio 2017 15:53
Grazie Alfredo E' quello di cui ho bisogno!!!

Dovrei ripagarti con le ore di lavoro che mi hai fatto risparmiare non dovendo piu' inserire a manina i valori di RGB per 3500 colori!

Adesso trovo come rendere dinamico il pezzo di codice seguente e poi sono a cavallo (bardato a festa).

ur = Cells(Rows.Count, "s").End(xlUp).Row
Set rng = Range("V5:V" & ur)

Grazie ancora
ciao
p
alfrimpa
00venerdì 10 febbraio 2017 16:01
No Piero tu non devi fare nulla.

Con l'istruzione

On Error Resume Next


Ho detto alla macro di "saltare" eventuali errori di esecuzione però non sono sicuro che poi la funzione restituisca gli esatti colori RGB.

Con le istruzioni

vb
ur = Cells(Rows.Count, "s").End(xlUp).Row
Set rng = Range("V5:V" & ur)


Ho reso "dinamico il range che va da V5 sino alla riga dell'ultima cella piena della colonna S.

Spero di essere stato chiaro.
piddu04
00venerdì 10 febbraio 2017 16:29
Perfetto se aggiungo o tolgo valori mantenendo fissi il primo valore sulla riga 5 e le colonne S T U e V, ma se aggiungo colonne o righe prima della 5 non funziona piu'.
p
alfrimpa
00venerdì 10 febbraio 2017 17:26
E questo è normale.

Per rendere dinamica la colonna ci devo pensare un po'.
piddu04
00lunedì 20 febbraio 2017 14:43
E' una sfida interessante o lunga e noiosa?
Grazie
Ciao
p
alfrimpa
00lunedì 20 febbraio 2017 14:48
Re:
piddu04, 20/02/2017 14.43:

E' una sfida interessante o lunga e noiosa?
Grazie
Ciao
p



Nè l'uno nè l'altro; il problema è che mi sono completamente dimenticato di questa discussione.

Ora cerco di riprendere le fila.
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 01:30.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com