mi stavo cimentando a modificare alcune macro trova disponibili nel forum
facendo uso di arrays, ma quasi a conclusione del codice ho notato che vi è un
errore "apparente";
- Codice: Seleziona tutto
Option Base 1
Sub TROVA_E_COLORA()
Dim ArTROVA()
Dim counter As Integer, i As Long
On Error Resume Next ' linea 1 <<<<<<<<<<
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Worksheets("Foglio1")
Erase ArTROVA
URC = .Range("C" & Rows.Count).End(xlUp).Row
.Range("C3:H" & URC).Interior.ColorIndex = xlNone
ArTROVA = .Range("M3:M" & Cells(Rows.Count, "M").End(xlUp).Row).Value
URK = .Range("K" & Rows.Count).End(xlUp).Row
.Range("K3:K" & URK).ClearContents
counter = 0
For Each cl In .Range("C3:H" & 13)
For K = LBound(ArTROVA) To UBound(ArTROVA)
If cl = ArTROVA(K, 1) Then
cl.Interior.ColorIndex = 28
For i = K To UBound(ArTROVA) - 1
ArTROVA(i, 1) = ArTROVA(i + 1, 1)
Next i
ReDim Preserve ArTROVA(UBound(ArTROVA) - 1) ' linea 2 <<<<<<<
.Range("K3:K" & UBound(ArTROVA) + 2) .ClearContents
.Range("K3:K" & UBound(ArTROVA) + 1).Value = ArTROVA
ArTROVA = .Range("K3:K" & Cells(Rows.Count, "K").End(xlUp).Row).Value
GoTo SALTACL
End If
Next K
SALTACL:
counter = counter + 1
If counter = 6 Then
.Range("K3:K" & UBound(ArTROVA) + 2).ClearContents
ArTROVA = .Range("M3:M" & Cells(Rows.Count, "M").End(xlUp).Row).Value
counter = 0
End If
Next cl
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
inserisco i valori da trovare, colonna M, in un array, ArTROVA, e ricerco questi valori per ogni riga del range C-H;
se un item dell'array viene trovato elimino questo valore dall'array poichè su una stessa riga non possono esserci valori identici.
ridimensionando l'array iniziale, riporto i valori rimanenti, quelli ancora da cercare, in colonna K e successivamente ripopolo lo stesso array ArTROVA e continuo la ricerca fino alla fine della riga;
passando alla riga successiva ripristino l'array iniziale.
tutto sembra procedere correttamente ma se commento la linea 1 marcata, resume next, ho errore alla linea 2, redim preserve,
ed il messaggio recita "INDICE NON INCLUSO NELL'INTERVALLO":
capisco che il resume next fa proseguire in caso di errore, ma non capisco perchè in sua assenza vi è questo errore se le stesse linee di codice usate in altra circostanza, isolate da questo contesto, funzionano perfettamente.
saluti e grazie