Ciao,
a10n11 ha scritto:... sei sulla strada buona dell'apprendista stregone che applica ad ogni lavoro tutto quello che mano a mano impara.
il rischio è quello di creare dei minestroni indigesti.
Tieni sempre in considerazione che ogni lavoro deve essere il più snello e leggero possibile (sempre nel limite del risultato voluto)
Ti do pienamente ragione... Non hai idea di quanto sia frustrante per un appassionato di questa affascinante materia come me il constatare continuamente, con profonda consapevolezza, di non sapere praticamente nulla se non quello che ha imparato da te... la cosa che mi fa più impressione sono appunto l'estrema eleganza, sintesi, precisione chirurgica con cui scrivi le istruzioni... anche quest'ultima macro mi ha fatto letteralmente andare in estasi...
Oltre a risolvermi il problema specifico mi dai l'emozione tipica di chi, estasiato, osserva un'opera d'arte... ma qui forse sto uscendo dai binari, vorrei solo farti ben capire.......
".......Quanto t'invidioooooooooooooo!!" :)))
La macro funziona a meraviglia, l'ho solo adattata alle mie tabelle intervenendo con una piccolissima correzione nel Select Case
Grazie infinite per l'ennesimo aiuto risolutivo e buona serata,
eZio
EDIT:Ti voglio far fare due risate... :))
ecco come avevo preparato il mio minestrone... sicuramente indigesto anche se alla fine funzionava, ma non è così che mi piace operare... sono infatti pienamente d'accordo col tuo ragionamento "che ogni lavoro deve essere il più snello e leggero possibile", d'altronde il VBA ce lo permette
Sub confronta_TUTTO()
Application.Run "confronta_1"
Application.Run "confronta_2"
Application.Run "confronta_3"
ActiveCell.Offset(-1, 0).Range("A1").Select
End Sub
Sub confronta_1()
'
' la 1^ macro da fare girare
'
Dim colonna As Integer
N = ActiveCell.Row
colonna = 102
Set area2 = Range(Cells(N, 9), Cells(N, 63))
Set area1 = Range(Cells(N, 4), Cells(N, 8))
For Each cl In area1
For Each cl2 In area2
If cl = cl2 Then
With cl
.Interior.ColorIndex = 39
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
End With
Cells(N, colonna).Value = cl.Value
colonna = colonna + 1
End If
Next cl2
Next cl
Set area = Nothing
Set area2 = Nothing
Columns("CX:DB").ClearContents
End Sub
Sub confronta_2()
'
'la 2^ macro da fare girare
'
Dim colonna As Integer
N = ActiveCell.Row
colonna = 107
Set area2 = Range(Cells(N, 70), Cells(N, 95))
Set area1 = Range(Cells(N, 4), Cells(N, 8))
For Each cl In area1
For Each cl2 In area2
If cl = cl2 Then
With cl
.Interior.ColorIndex = 27
End With
Cells(N, colonna).Value = cl.Value
colonna = colonna + 1
End If
Next cl2
Next cl
Set area = Nothing
Set area2 = Nothing
Columns("DC:DZ").ClearContents
End Sub
Sub confronta_3()
'
'la 3^ macro da fare girare
'
Dim colonna As Integer
N = ActiveCell.Row
colonna = 97
Set area2 = Range(Cells(N, 65), Cells(N, 69))
Set area1 = Range(Cells(N, 4), Cells(N, 8))
For Each cl In area1
For Each cl2 In area2
If cl = cl2 Then
With cl
.Interior.ColorIndex = none
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlMedium
End With
Cells(N, colonna).Value = cl.Value
colonna = colonna + 1
End If
Next cl2
Next cl
Set area = Nothing
Set area2 = Nothing
Columns("CS:CW").ClearContents
End Sub
Come vedi, ora, con l'ultima macro che mi hai preparato mi hai fatto fare un notevole passo avanti... e passo dopo passo l'homo erectus è diventato homo sapiens :)))