PDA

View Full Version : [VB] Macro excel per trovare e colorare una cella


Friend34
30-05-2014, 17:30
Ciao, avrei bisogno di un piccolo aiutino per una macro excel.
Avrei necessità che il testo contenuto in una cella su un foglio (consegna) venisse cercato nella colonna A di un altro foglio (database) e, nel caso fosse trovato, che la cella che lo contiene si colorasse di verde.
Sono ore che sbatto la testa per cercare qualcosa del genere ma ho solo trovato ricerca e modifica nello stesso foglio :(

Grazie in anticipo

Daniels118
03-06-2014, 07:36
Certo potresti fare una macro, ma esiste un modo più semplice. Puoi inserire una colonna nascosta con la formula cerca.vert, quindi utilizzi la formattazione condizionale per modificare il colore della cella.

Friend34
05-06-2014, 13:04
Il problema è che tutto ciò deve accadere alla pressione di un pulsante e, a seconda di quale dei due pulsanti si preme, la cella deve diventare o gialla o verde :(

Daniels118
05-06-2014, 14:24
Prima hai detto che la cella doveva colorarsi in base alla presenza del valore in un altro foglio, ora invece stai dicendo che il colore viene stabilito premendo due pulsanti diversi, forse dovresti prima decidere cosa vuoi fare.

Friend34
07-06-2014, 09:13
Prima hai detto che la cella doveva colorarsi in base alla presenza del valore in un altro foglio, ora invece stai dicendo che il colore viene stabilito premendo due pulsanti diversi, forse dovresti prima decidere cosa vuoi fare.

Doveva colorarsi in base alla presenza del valore in un altro foglio tramite MACRO però (l'ho specificato nel primo post), quindi inevitabilmente alla pressione di un pulsante. ;)
Il fatto che si colori di verde o giallo è del tutto secondario, a seconda del pulsante inserisco il codice modificato solo nella parte del colore

Daniels118
08-06-2014, 09:30
Bene dunque, puoi fare così:
prima di tutto crea due riferimenti ai fogli interessati:
set f1 = Worksheets("Foglio1")
set db = Worksheets("Foglio2")

Poi prelevi il valore interessato dal primo foglio così:
vf1 = f1.Range("A1").Value

E contestualmente cancelli il colore della cella (imposti il bianco):
f1.Range("A1").Interior.Color = rgb(255, 255, 255)

Poi fai un loop con il quale confronti il valore con le celle del secondo foglio, che potresti leggere così:
vdb = f1.Range("A" & i).Value

Se trovi il valore interessato imposti il colore sulla cella, per esempio il verde:
f1.Range("A1").Interior.Color = rgb(0, 255, 0)

Se il valore non viene trovato rimane il colore impostato prima del loop, cioè bianco.

Friend34
09-06-2014, 14:42
Ti ringrazio moltissimo per l'aiuto. Dopo aver impostato il ciclo e ritoccato alcuni particolari sono riuscito a fare esattamente quello che avevo in mente grazie alla tua base :)

Appena arrivo a casa pubblico il codice completo nel caso qualcuno avesse bisogno della stessa cosa

Friend34
10-06-2014, 12:20
Ecco qui

Sub Arrivato()
Set f1 = Worksheets("Consegna")
Set Db = Worksheets("Database")

'Poi prelevi il valore interessato dal primo foglio così:
vf1 = f1.Range("G15").Value

'E contestualmente cancelli il colore della cella (imposti il bianco):
f1.Range("G15").Interior.Color = RGB(255, 255, 255)

'Poi fai un loop con il quale confronti il valore con le celle del secondo foglio, che potresti leggere così:
For i = 1 To 3000
If Db.Range("A" & i).Value = f1.Range("G15") Then
'Se trovi il valore interessato imposti il colore sulla cella, per esempio il verde:
Db.Range("A" & i).Interior.Color = RGB(255, 255, 0)
End If
Next
End Sub