Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007]- Inserire MsgBox in una macro Opzioni
aetio
Inviato: Saturday, April 23, 2011 8:14:59 AM

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 = 39
dando 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!! ;))
Sponsor
Inviato: Saturday, April 23, 2011 8:14:59 AM

 
a10n11
Inviato: Saturday, April 23, 2011 12:17:30 PM

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

aetio
Inviato: Saturday, April 23, 2011 1:18:20 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
UPDATED
aetio
Inviato: Tuesday, April 26, 2011 10:10:30 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
DELETED DUE UPDATED
aetio
Inviato: Tuesday, April 26, 2011 3:36:26 PM

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
a10n11
Inviato: Tuesday, April 26, 2011 3:59:27 PM

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


aetio
Inviato: Tuesday, April 26, 2011 5:05:26 PM

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 = 39

In 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...






a10n11
Inviato: Tuesday, April 26, 2011 6:54:57 PM

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

aetio
Inviato: Tuesday, April 26, 2011 7:04:07 PM

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ù?
a10n11
Inviato: Tuesday, April 26, 2011 10:04:44 PM

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

aetio
Inviato: Wednesday, April 27, 2011 5:29:53 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Grazie della precisazione... l'ho riscritta nella macro.
Saluti
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.