|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, devo cercare, evidenziandoli una volta trovati, dei codici in una stessa tabella; debbo però dare alle celle colori diversi, uno per codice. Es. devo cercare cod. 25, 47, 138 e vorrei che il cod. 25 avesse il colore 3, il cod. 47 il 4, il cod. 138 il 6. Tempo fa a10n11 mi aveva preparato una macro: Code:Sub cerca() Dim Myvalue As Long Myvalue = InputBox("DIGITA IL FATTORE DA CERCARE", "CERCA FATTORE") For n = 18 To Cells(18, 3).End(xlDown).Row Set Area = Range(Cells(n, 3), Cells(n, 7)) For Each cl In Area If cl = Myvalue Then With cl .Interior.ColorIndex = 39 End With End If Next cl Set Area = Nothing Next n End Sub Funziona alla grande, ma ogni volta devo riaprire il form delle Macro, entrare nel testo e modificare l'istruzione .Interior.ColorIndex = 39dando di volta in volta un colore diverso. E' possibile inserire un'ulteriore MsgBox, appena dopo quella che già c'è, che mi chieda di che colore voglio colorare la cella del codice che sta per cercare? (Scanso equivoci è meglio precisare: non è per pigrizia... ahahaha è che alla fine del lavoro si è perso un bel pò di tempo...) Grazie assai, buona giornata eZio p.s. ne approfitto per fare gli Auguri di Buona Pasqua a tutti!! ;))
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve così al volo senza poterla protvare: Sub cerca() Dim Myvalue As Long dim Mycolor as long Myvalue = InputBox("DIGITA IL FATTORE DA CERCARE", "CERCA FATTORE") For n = 18 To Cells(18, 3).End(xlDown).Row Set Area = Range(Cells(n, 3), Cells(n, 7)) For Each cl In Area If cl = Myvalue Then Mycolor = InputBox("DIGITA RIFERIMENTO COLORE : numerico, "DIGITA COLORE") With cl .Interior.ColorIndex = Mycolor End With End If Next cl Set Area = Nothing Next n End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
UPDATED
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
DELETED DUE UPDATED
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, Grazie per la macro :)) mi sembra però che nell'istruzione Mycolor = InputBox("DIGITA RIFERIMENTO COLORE : numerico, "DIGITA COLORE") manchi un separatore " dopo numerico perché segnalava un errore... L'ho provata (corretta scrivendo il separatore) e ora funziona, ma continua a ripresentare la seconda InputBox anziché uscire dopo avere scelto il colore... Grazie assai e buona giornata, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve cotinua ad uscire la Msgbox perchè è all'interno del ciclo. Mi pareva di aver capito: Commenta: E' possibile inserire un'ulteriore MsgBox, appena dopo quella che già c'è, che mi chieda di che colore voglio colorare la cella del codice che sta per cercare?
che ad ogni codice trovato volessi assegnare un colore diverso. sposta la riga del codice al di fuori del ciclo: Set Area = Range(Cells(n, 3), Cells(n, 7)) Mycolor = InputBox("DIGITA RIFERIMENTO COLORE : numerico", "DIGITA COLORE") For Each cl In Area If cl = Myvalue Then With cl .Interior.ColorIndex = Mycolor End With End If Ps. Un doppio apice mi era rimasto indietro. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, scusami tanto... è che sono proprio un pollo che messo davanti alla linea retta diventa catatonico... GULP!!Provo a spiegarmi meglio... Situazione attuale: se devo cercare un codice in tabella1 (da col.3 a col.7, iniziando da riga 18 di col.3) ora uso questa macro: Code:Sub cerca() Dim Myvalue As Long Myvalue = InputBox("DIGITA IL FATTORE DA CERCARE", "CERCA FATTORE") For n = 18 To Cells(18, 3).End(xlDown).Row Set Area = Range(Cells(n, 3), Cells(n, 7)) For Each cl In Area If cl = Myvalue Then With cl .Interior.ColorIndex = 39 End With End If Next cl Set Area = Nothing Next n End Sub Ora, siccome devo cercare in quella tabella diversi codici e vorrei che poi rimangano tutti evidenziati nel foglio, vorrei modificare la macro in modo da evitare di entrare ogni volta manualmente nell'editor per modificare il colore della riga .Interior.ColorIndex = 39In pratica: 1) avvio la macro > 1^ MsgBox che mi chiede il codice da cercare > Enter > 2^MsgBox che mi chiede il codice del colore > Enter > Risultato: Tutti i codici con quel numero sono evidenziati, in tutta la tabella 2) ripeto le operazioni viste sopra per cercare un altro codice, che a sua volta rimane evidenziato 3) idem come sopra per tutti i codici che voglio evidenziare... Ovviamente ogni volta che ripeto l'operazione cambio colore......... Forse così è più chiaro... Grazie assai, buon pomeriggio eZio EDIT: ho provato a modificare la stringa, ma continua a uscire la 2^MsgBox...
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve escludi allora anche il primo ciclo. Sub cerca() Dim Myvalue As Long Myvalue = InputBox("DIGITA IL FATTORE DA CERCARE", "CERCA FATTORE") Mycolor = InputBox("DIGITA RIFERIMENTO COLORE : numerico", "DIGITA COLORE") For n = 18 To Cells(18, 3).End(xlDown).Row Set Area = Range(Cells(n, 3), Cells(n, 7)) For Each cl In Area If cl = Myvalue Then With cl .Interior.ColorIndex = Mycolor End With End If Next cl Set Area = Nothing Next n End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, ora è perfetta... ed ho imparato una cosa nuova. Non sapevo proprio come incastrare tra loro le istruzioni per farle lavorare correttamente. Certo è che il bicchiere in cui annego è molto piccolo!! Avete presente il dosatore degli sciroppi antibiotici? Ecco, ho reso l'idea.... ahahahaha Come sempre Grazie assai, buona serata eZio
EDIT ho notato che dalla macro hai tolto l'istruzione dim Mycolor as long perché ora non serve più?
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto: ho notato che dalla macro hai tolto l'istruzione dim Mycolor as long perché ora non serve più?
salve E' buona norma dichiarare sempre una variabile e di che tipo si tratta. anche se nell'ultimo esempio l'ho omessa sarebbe sempre corretto indicarla. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, Grazie della precisazione... l'ho riscritta nella macro. Saluti eZio
|
|
Guest |