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

[Excel 2007]-Evidenziare celle visibili con condizione Opzioni
aetio
Inviato: Saturday, June 11, 2011 3:59:23 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
sono alle prese con l’ennesimo problema legato alle mie ormai tanto care tabelle … :-))
Come credo di avere già detto in passato queste tabelle sono riferite ad un’Analisi Storica complessa di Magazzino; lo dico solo per fare capire dove devo “andare a parare”, altrimenti la mia richiesta potrebbe essere giudicata un poco assurda e strampalata, invece se riferita alla situazione “sul campo” è assai sensata… eccome!! :-))

Ipotizziamo una situazione di partenza come questa:



in cui le tabelle sono state filtrate sul codice 8 di col.P

Ora, per una tipologia di ricerca molto particolare devo monitorare (faccio solo un esempio, tratto dal file esempio a suo tempo usato per altre elaborazioni) la situazione specifica di col.O (tabella2) in cui se si osserva la col.B si nota che:
il cod.70 era presente in magazzino nel Sett.73’21
il cod.18 era presente nel Sett.73’06
il cod.74 era presente nel Sett.72’94

Per fini tecnico-organizzativi ogni codice di Settore che troviamo in col.B genera nella tabella estesa (non filtrata) un’area di interesse/influenza che ha un range compreso:
a)in altezza: tra la riga del Settore stesso più le 10 righe superiori (totale 11 righe)
b)in larghezza: da col.C a col.G
esempio: per il cod.70 di col.O nel Sett.73’21 si genera un’area, da col.C a col.G, dalla riga del Sett.73’21 a quella del Sett.73’31 della tabella estesa (i numeri dei settori aumentano dal basso verso l’alto); per il cod.18 di col.O nel Sett.73'06 si genera un’area, da col.C a col.G, dalla riga del Sett.73’06 al Sett.73'16 e via dicendo



In situazioni particolari ogni codice scritto in tabella2 può essere presente anche in tabella1: le 2 tabelle infatti sono fra esse collegate da circostanze tecnico-operative che spesso possono interagire. In questa ricerca specifica devo individuare quando e dove i codici isolati in tabella2 col filtro di cui sopra sono presenti in tabella1, in che modo sono presenti, in stretto rapporto con il settore che ne ha generato la ricerca. Osservando l’immagine sotto, anche se molto limitata e non del tutto conforme a quanto sotto esposto, si può intuire ciò di cui sto parlando.



In sintesi ecco cosa mi servirebbe e quale dovrebbe essere lo “stato dell’Arte” in questo caso specifico, quali istruzioni (che per ovvii e palesi motivi di estrema ignoranza in materia scrivo in volgare villano):
Situazione di partenza: tabelle filtrate, con diversi criteri a seconda delle esigenze operative

1) seleziono un intervallo in una colonna di tabella2 (nel ns. caso le celle visibili O35,O50;O118) che devo analizzare
il comando regista di tutta l’operazione deve selezionare le celle visibili che nel ns. caso sono solo 3 ma potrebbero essere anche 10

2) in base alla selezione, l’istruzione si legge per ogni riga il riferimento di col.B (il settore da assumere come base del proprio range di influenza nella tabella1 non filtrata)

3)per ogni settore individuato si crea la rispettiva area (totale 11 righe da col.C a col.G)

4)per ogni codice di tabella2 filtrato effettua in tabella1 una ricerca nel proprio settore/area di competenza e in base alla posizione della cella del codice rispetto all’area di competenza restituisce in tabella2 un colore della cella nella colonna della selezione. Facciamo un’ipotesi usando l'immagine sopra, quella solo con le aree di competenza colorate di Giallo:
-cod.70 di cella O35 ==> Sett.73’21 ==> Range nella tabella1 estesa C40:G50
a)”C’è un cod.70 nell’area C51 :G54 (intervallo di 4 righe appena prima dell’area del sett.) ? se SI colora la cella O35 di Verde- se NO resta senza colore”
b)”C’è un cod.70 nell’area C36 :G39 (intervallo di 4 righe appena dopo dell’area del sett.)? se SI colora la cella O35 di Azzurro- se NO resta senza colore”
(in caso di compresenza optare per la posizione antecedente al sett. ==> C51 :G54/ cella O35 Verde)
c) “C’è un cod.70 nell’area C50 :G60 (intervallo dell’area del sett.)? Passa oltre perché è già stato evidenziato in tabella2”
d)”C’è un cod.18 (della cella visibile O50 appena sotto a quella in esame) nell’area del sett.73’21 (C40:G50)? Se SI borda la cella (O50) di Rosso, massimo spessore”

5)”Passa alla riga visibile successiva della colonna di selezione e ripeti le stesse operazioni viste sopra”
Il tutto fino all’ultima riga della colonna di selezione

Nota: supponiamo che durante il processo del cod.18 di cella visibile O50 la macro alla domanda:
“C’è un cod.18 nell’area C66 :G69 (intervallo di 4 righe appena prima dell’area del sett.) ? SI se SI colora la cella O50 diVerde”
rilevi che la cella O50 è già bordata di Rosso perché il codi.18 era presente nel Range C50:G60 relativo al sett.73’21 di cod.70, Bordi la cella O50 lasciandone il colore (Verde o Blu a seconda della circostanza)
Ecco un esempio "concreto" del risultato, che ora mannaggia devo fare tutto a mano :))


(qui ci sono anche celle colorate con Verde e Azzurro di tonalità più chiare, ma già con 2 colori di base và benissimo!!)


Spero tanto di essere stato comprensibile. Altrimenti… come dicevano i 3-3 “A ‘Schposiziò!!” :-))
Grazie infinite per la sopportazione, buona serata
eZio

Nota.
precisazione:
- tabella1: da col.C a col.G
- tabella2: da col.H a col.AG
- riga di partenza delle tabelle: riga 18
non mi interessa che in tabella1 vengano colorate aree o celle. Mi interessa solo la situazione delle celle di tabella2 interessate dalla colonna selezione
Sponsor
Inviato: Saturday, June 11, 2011 3:59:23 PM

 
a10n11
Inviato: Saturday, June 11, 2011 10:21:04 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
quello che chiedi non è facilmente realizzabile con i soliti cicli.
Però bisogna che mi togli una curiosità. Se devo analizzare i dati selezionati uno alla volta, perchè ad un certo punto analizzando (come nell'esempio che hai fatto) il valore 70 devo anche cercare il valore 18
Commenta:

d)”C’è un cod.18 (della cella visibile O50 appena sotto a quella in esame) nell’area del sett.73’21 (C40:G50)? Se SI borda la cella (O50) di Rosso, massimo spessore”


significa forse che analizzando il codice 18 devo prendere in esame anche il codice 74??

Mi si passi una battuta vista l'ora. Ma alla fine di tutto questo "ambaradan" c'è veramente qualcuno che riesce ad interpretare i dati di tabella??
La macro per Lunedì.

saluti
Giap


aetio
Inviato: Sunday, June 12, 2011 11:00:55 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
mi spiace molto tediarti con questi miei "arzigogoli", so che questo è davvero un labirinto, nel vero senso della parola...
se per facilitarti il compito bisogna fare creare dalla macro delle copie del foglio che si sta analizzando in cui effettivamente colorare le celle in tabella1 affinché le istruzioni si trovino con più rapidità ed in modo meno complesso, perché poi la macro possa disporle in tabella2 a seconda delle loro caratteristiche reciproche... non c'è assolutamente problema; eventualmente ho il file con le tabelle pivot che potrebbe risultarti utile. Se ti servono le macro te le posto in modo da non farti tribolare oltre misura.
La sequenza che ho sopra descritto si riferisce all'analisi di ogni codice contenuto nella porzione di colonna selezionata per l'analisi. Quindi è esatto: quando la macro analizza il cod.18 deve prendere in esame anche il cod.74 e poi, quando prenderà in esame il cod.74 dovrà prendere in esame anche il codice successivo, se ve n'è uno...
La macro dovrà però fare UN solo lavoro, cioè l'analisi della porzione di colonna selezionata; NON dovrà riempire tutta la tabella2 di celle colorate di Verde o Azzurro o celle bordate di Rosso...

La tua battuta è più che pertinente :))))))))
E non è facile risponderti... Però penso che tu mi possa capire anche usando poche parole: quanti Professoroni blasonati in questa Materia sono in grado di scrivere macro belle quanto le tue? Sono di larghe maniche e dico in modo assai diplomatico che essi siano "tendenti a Zero", anche se è palese che siamo di fronte ad un secco Zero... Ne sono certo, perché ho navigato e navigato in rete cercando informazioni su questo argomento (il VBA e le sue applicazioni) e ne ho viste si può dire a migliaia di macro, anche molto complesse, ma MAI ho visto un'Eccellenza pari alla tua, e se vogliamo proprio dirla tutta, non ho nemmeno MAI visto una immensa umiltà come la tua... Insomma: le cose speciali le sanno fare solo le persone speciali (speciali sul campo, non "a parole"), e le cose speciali, complesse, le sanno risolvere solo le persone speciali... A buon intenditor poche parole... A me basta che le le mie tabelle le sappia leggere io, e detto fra noi è assai meglio che le sappia leggere SOLO io altrimenti (ora si passi a me il termine, ma è appropriato e pertinente...) sai che casino?? :)))
Grazie infinite anche per la pazienza, buona giornata,
eZio

Nota: se il problema è serio e se la macchina dovesse metterci delle mezz'ore per addivenire alla risposta dei quesiti, mettiamoci pure sopra un mattone: continuerò a farlo in manuale, che ha comunque il pregio di permettermi di vedere, mentre effettuo le operazioni manuali di ricerca e analisi, alcuni dettagli importanti... ;))
a10n11
Inviato: Monday, June 13, 2011 11:09:15 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve

Necessitano alcuni chiarimenti:


Riepilogo:
Come nell'esempio da te fatto, selezioni le celli visibili della tabella 2 filtrata i codici di colonna O equivalenti a:
70 -18 - 74

analizzo il codice 70 , prelevo il codi Sett =73'21, recupero il numero di riga, creo un'area di di 11 righe per 5 colonne equivalente al range C25:G35 ( le mie tabelle partono da riga 3)
creo un'ulteriore area di 4 righe sopra e 4 righe sotto l'area centrale quindi C21:G43
e C36:G57

se trovo il codice 70 nell'area centrale che colore utilizzo?
se lo trovo nell'area 4 Superiore Azzurro
se lo trova nell'area 4 Inferiore Verde
la stessa riecerca la effettuo per il codice subito successivo . il 18

Quello che non è chiaro è quando dici:

Commenta:

c) “C’è un cod.70 nell’area C50 :G60 (intervallo dell’area del sett.)? Passa oltre perché è già stato evidenziato in tabella2”


che c'entra l'area C50:G60?? è al di fuori dell'area di intervento.

saluti
Giap




aetio
Inviato: Monday, June 13, 2011 3:25:48 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Scusami assai se leggo e rispondo solo ora: problemi logistici mi hanno impedito di farlo prima...
le tue obiezioni sono più che fondate:
-il punto
Code:
c) “C’è un cod.70 nell’area C50 :G60 (intervallo dell’area del sett.)? Passa oltre perché è già stato evidenziato in tabella2”
si riferisce all'area C40:G50 e non alla C50:G60!!!! Scusa l'imperdonabile strafalcione (che vergogna!!)
- per quanto riguarda
Code:
se trovo il codice 70 nell'area centrale che colore utilizzo?

se non ti crea problemi usa il colore 44, quindi il "Passa oltre perché è già stato evidenziato in tabella2" lo cancelliamo...
-per quanto riguarda
Code:
la stessa riecerca la effettuo per il codice subito successivo . il 18

specifico: se lo trova nell'area in esame (C40:G50) borda il cod.18 di cella O50 di Rosso, se invece non lo trova lascia la cella così com'è...

Grazie infinite, buon pomeriggio
eZio

a10n11
Inviato: Monday, June 13, 2011 6:48:05 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
partiamo da qui, poi faremo gli eventali aggiustamenti:

La macro opera su un range selezionato della tabella filtrata.

Sub coloraselezione()
Dim rng As Range, rng1 As Range, rng2 As Range, area10 As Range
Dim mysett As Variant, sett As Variant, Itx As Variant
Dim Mval As Variant, Mval2 As Variant

Set rng = Range("B3", Range("B3").End(xlDown))
col = Selection.Column
Ur = Cells(Cells.Rows.Count, col).End(xlUp).Row
Set area = Range(Cells(3, col), Cells(Ur, col)).SpecialCells(xlCellTypeVisible)
For Each Itx In area
mysett = Cells(Itx.Row, 2).Value
i = Itx.Row
Do While Cells(i + 1, col).EntireRow.Hidden = True
i = i + 1
Loop
nextItx = Cells(i + 1, col).Value
For Each sett In rng
If sett = mysett Then
riga = sett.Row
Set area10 = Range(Cells(riga - 10, 3), Cells(riga, 7))
Set rng1 = Cells(riga, 3).Offset(-14, 0).Resize(4, 5)
Set rng2 = Cells(riga, 3).Offset(1, 0).Resize(4, 5)
For Each Mval In rng1
If Mval.Value = Itx Then
Itx.Interior.ColorIndex = 34
Exit For
End If
Next Mval
If nextItx = "" Then GoTo fine
For Each Mval2 In rng2
If Mval2 = nextItx Then
With Cells(i + 1, col).Borders
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
End If
If Mval2 = Itx And Itx.Interior.ColorIndex = xlNone Then
Itx.Interior.ColorIndex = 4
End If
Next Mval2
Exit For
End If
Next sett
Next
fine:
Set area10 = Nothing
Set area = Nothing
Set rng = Nothing
Set rng1 = Nothing
Set rng2 = Nothing
End Sub


NB: la mia macro parte da riga 3

saluti
Giap




aetio
Inviato: Monday, June 13, 2011 8:29:14 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
commento a caldo: "Mamma mia quanto è elaborata!!" E' bellissima...
la macro segnala correttamente in Verde e Azzurro i codici rispettivamente prima e dopo il range del sett. in esame, ma non il codice della riga seguente di tabella2 presente nel range del sett. in esame (quello che in tal caso dovrebbe diventare bordato di rosso) in particolare: a volte lo segnala pur non essendo presente, altre volte non lo segnala pur essendo presente... non riesco a decifrarne la logica...

Grazie assai e buona serata... ho il presentimento che risolverai in pochissimo tempo anche questo enigma... :)))
eZio


a10n11
Inviato: Monday, June 13, 2011 10:06:45 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
aetio ha scritto:
Ciao,
..ma non il codice della riga seguente di tabella2 presente nel range del sett. in esame (quello che in tal caso dovrebbe diventare bordato di rosso) in particolare: a volte lo segnala pur non essendo presente, altre volte non lo segnala pur essendo presente... non riesco a decifrarne la logica...

Grazie assai e buona serata... ho il presentimento che risolverai in pochissimo tempo anche questo enigma... :)))
eZio




salve
non riesco a capire il punto sopra indicato. Dammi i riferimenti nella tabella di esempio che hai postato con filtro
di codice 8 in colonna P.
quali codici e quali celle non sono bordati?
saluti
Giap


aetio
Inviato: Monday, June 13, 2011 10:28:35 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
nella tabella1 che ho postato sopra supponiamo:



- che in cella F46 anziché il cod.78 ci sia scritto il cod.18
Supponiamo quindi:
- che la macro stia processando il cod.70 > sett.73'21 > considererebbe il Range C40:G50 e troverebbe quindi il cod.18 che in tabella2 filtrata (in cella O50) è nella riga successiva a quella del cod.70 e quindi ne borderebbe la cella di Rosso.
Grazie assai, buona serata
eZio
a10n11
Inviato: Tuesday, June 14, 2011 9:43:10 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
la macro precedente prevedeva di bordare di rosso solo i valori che venivano trovati nella quartina inferiore
avevo male interpretato le indicazioni.

Sub coloraselezione()
Dim rng As Range, rng1 As Range, rng2 As Range, area10 As Range
Dim mysett As Variant, sett As Variant, Itx As Variant
Dim Mval As Variant, Mval2 As Variant, mval3 As Variant
Set rng = Range("B3", Range("B3").End(xlDown))
col = Selection.Column
Ur = Cells(Cells.Rows.Count, col).End(xlUp).Row
Set area = Range(Cells(3, col), Cells(Ur, col)).SpecialCells(xlCellTypeVisible)
For Each Itx In area
mysett = Cells(Itx.Row, 2).Value
i = Itx.Row
Do While Cells(i + 1, col).EntireRow.Hidden = True
i = i + 1
Loop
nextItx = Cells(i + 1, col).Value
For Each sett In rng
If sett = mysett Then
riga = sett.Row
Set area10 = Range(Cells(riga - 10, 3), Cells(riga, 7))
Set rng1 = Cells(riga, 3).Offset(-14, 0).Resize(4, 5)
Set rng2 = Cells(riga, 3).Offset(1, 0).Resize(4, 5)
For Each Mval In rng1
If Mval.Value = Itx Then
Itx.Interior.ColorIndex = 34
Exit For
End If
Next Mval
For Each Mval2 In rng2
If Mval2 = Itx And Itx.Interior.ColorIndex = xlNone Then
Itx.Interior.ColorIndex = 4
End If
Next Mval2
If nextItx = "" Then GoTo fine
For Each mval3 In area10
If mval3 = nextItx Then
With Cells(i + 1, col).Borders
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
Exit For
End If
Next mval3
Exit For
End If
Next sett
Next Itx
fine:
Set area10 = Nothing
Set area = Nothing
Set rng = Nothing
Set rng1 = Nothing
Set rng2 = Nothing
End Sub



saluti
Giap

aetio
Inviato: Tuesday, June 14, 2011 5:39:20 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
ho provato la macro, ma restituisce l'"Errore di run-time:'1004': Errore definito dall'applicazione o dall'oggetto" e facendo il debug evidenzia l'istruzione
Set rng1 = Cells(riga, 3).Offset(-14, 0).Resize(4, 5)
Non ho compreso a cosa si riferisce il Resize(4,5)...
Grazie assai, buona serata
eZio
aetio
Inviato: Tuesday, June 14, 2011 5:55:05 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
EDIT:
credo di avere "intuito" il motivo: se seleziono le celle di un filtro di un sett.che dista da riga 3 meno delle righe necessarie alla selezione che effettua la macro (-14) si pianta... infatti ho provato a fare lavorare la macro su selezioni più in basso e funziona alla grande...
a10n11
Inviato: Tuesday, June 14, 2011 6:57:05 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
aetio ha scritto:
EDIT:
credo di avere "intuito" il motivo: se seleziono le celle di un filtro di un sett.che dista da riga 3 meno delle righe necessarie alla selezione che effettua la macro (-14) si pianta... infatti ho provato a fare lavorare la macro su selezioni più in basso e funziona alla grande...

salve
Intuìto bene!
Non avevo previsto la possibilità di selezionare i primi records. Al limite basta mettere un controllo di riga.
saluti
Giap


aetio
Inviato: Tuesday, June 14, 2011 7:17:33 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
innanzi tutto: la macro è semplicemente fantastica!! ...come al solito di un'Eleganza impeccabile.
Un immenso Grazie per avermi risolto anche questo bel problema... non sembra ma porta via un bel pò' di tempo fare il tutto in manuale!!

a10n11 ha scritto:
[quote=aetio]
Al limite basta mettere un controllo di riga

... e ti pare che una cippazza incallita come me sia in grado di "mettere un controllo di riga"?? :))
Se non ti creo disturbo, come faccio?

Nell'istruzione
Set rng1 = Cells(riga, 3).Offset(-14, 0).Resize(4, 5)
Non ho compreso a cosa si riferisce il Resize(4,5)... mi potresti accennare in due parole cosa significa?
Grazie infinite e buona serata
eZio
a10n11
Inviato: Tuesday, June 14, 2011 8:08:24 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694

aetio ha scritto:

... e ti pare che una cippazza incallita come me sia in grado di "mettere un controllo di riga"?? :))
Se non ti creo disturbo, come faccio?

Nell'istruzione
Set rng1 = Cells(riga, 3).Offset(-14, 0).Resize(4, 5)
Non ho compreso a cosa si riferisce il Resize(4,5)... mi potresti accennare in due parole cosa significa?
Grazie infinite e buona serata
eZio


Salve
Domani vedo di aggiungerti il controllo di riga. Anche se risali a macro precedenti era stato già utilizzato.


Istruzione: Set rng1 = Cells(riga, 3).Offset(-14, 0).Resize(4, 5)

il significato è semplice, costruzisce un'area data una cella di partenza.

Cells(riga,3) è la riga del codice selezionato
.Offset(-14, 0) si sposta la selezione 14 righe sopra
.Resize(4, 5) dalla cella di riferimento dell'offset, si estende il range di 4 righe e 5 colonne quindi supponendo
che la cella di riferimento dell'offset fosse C25 con resize il range diventerebbe C25:G28
saluti
Giap



aetio
Inviato: Tuesday, June 14, 2011 9:31:30 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Grazie di tutto...!!

La spiegazione è chiarissima: non riuscivo ad interpretare quei due riferimenti (4,5) -> 4 righe e 5 colonne

Infatti, ricordo che c'era una definizione di "controllo di riga" in una macro, ma non riuscirei ad adattarla a questa macro perché non conosco lo schema costruttivo

Grazie assai, buona serata
eZio
a10n11
Inviato: Wednesday, June 15, 2011 11:13:29 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
ho apportato alcune piccole modifiche alla macro alla luce dei seguenti casi che si posssono verificare:

1) riga selezionata troppo bassa per estendere le selezioni in tabella 1
In questo caso, le selezioni vengono fatte solo sulla parte della tabella1 disponibile.
Es. Tabella che parte sempre da riga 3:
Selezionando riga 10, - Prende in considerazione solo le 8 righe disponibili in tabella 1
esclude la quartina superiore ma prende la quartina inferiore

2) La seconda modifica, è stata fatta per prevedere la possibilità di selezionare solo una parte dei valori filtrati visibili.
questa che segue è la macro modirficata. Provala e fa sapere.




Sub coloraselezione()
Dim rng As Range, rng1 As Range, rng2 As Range, area10 As Range
Dim mysett As Variant, sett As Variant, Itx As Variant
Dim Mval As Variant, Mval2 As Variant, mval3 As Variant
Dim Area As Range, Ctrl As Boolean

Set rng = Range("B3", Range("B3").End(xlDown))
col = Selection.Column
counter = 0
'--------------------------------------
' Definisce l'area di selezione e conta le righe della selezione
miorange = Selection.Address
Set Area = Range(miorange).SpecialCells(xlCellTypeVisible)
For Each sel In Area
righe = righe + sel.Rows.Count
Next
'-------------------------------------------

For Each Itx In Area
counter = counter + 1
mysett = Cells(Itx.Row, 2).Value
i = Itx.Row
Do While Cells(i + 1, col).EntireRow.Hidden = True
i = i + 1
Loop

' il contatore serve per definire il limite di NextItx nel caso di selezioni parziali
'dei codici visibili-------------------------------------------------------
If counter < righe Then
nextItx = Cells(i + 1, col).Value
Else
nextItx = ""
End If
'-------------------------------------------------------------
For Each sett In rng
If sett = mysett Then
riga = sett.Row
'---------------------controllo Riga della selezione
blk1 = riga - 10
blk2 = riga - 14
blk3 = 4
If blk1 <= 3 Then blk1 = 3
If blk2 < 3 And blk1 > 3 Then
blk2 = 3
ElseIf blk1 <= 3 Then
Ctrl = True
End If
'-------------------------------------------------------------------------
Set area10 = Range(Cells(blk1, 3), Cells(riga, 7))
If Not Ctrl Then
Set rng1 = Cells(blk2, 3).Resize(4, 5)
For Each Mval In rng1
If Mval.Value = Itx Then
Itx.Interior.ColorIndex = 34
Exit For
End If
Next Mval
End If
Set rng2 = Cells(riga, 3).Offset(1, 0).Resize(blk3, 5)
For Each Mval2 In rng2
If Mval2 = Itx And Itx.Interior.ColorIndex = xlNone Then
Itx.Interior.ColorIndex = 4
End If
Next Mval2
If nextItx = "" Then GoTo fine
For Each mval3 In area10
If mval3 = nextItx Then
With Cells(i + 1, col).Borders
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
Exit For
End If
Next mval3
Exit For
End If
Next sett
Ctrl = False
Next Itx
fine:
Set area10 = Nothing
Set Area = Nothing
Set rng = Nothing
Set rng1 = Nothing
Set rng2 = Nothing
End Sub


saluti
Giap

aetio
Inviato: Wednesday, June 15, 2011 12:02:24 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
prima è doverosa l'esclamazione: "Mamma mia!!!!!!!!!!" Questo è un capolavoro... non ho più parole.
Hai centrato in pieno i due obiettivi che avevo bisogno di contemplare nella macro... selezione troppo in alto e selezione parziale colonna... Davvero unico, altro che fuoriclasse!!
Ho potuto fare solo alcune prove adeguate, e la macro ha eseguito tutto ALLA PERFEZIONE.
Grazie infinite, sei davvero un Grande Amico... buon pomeriggio
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.