Buongiorno.
Ho un problema che non so se abbia una soluzione o sia intrinsecamente limitato dalle regole di Excel.
La mia routine rucorsiva scorre la prima colonna in cui ci sono delle celle unite, che si riferiscono ad altri dati da elaborare. A me occorre mettere in un array i limiti di ogni cella unita, quindi inizio e fine, dinamicamente.
Ho trovato il modo, ed è abbastanza semplice; per farlo, utilizzo un array multimensionale. La routine va da sé è dinamica, quindi dovrebbe contemperare la possibilità di ridurre la dimensione dell'array a quella reale al termine del popolamento.
Però, l'istruzione reDim Preserve mi dà errore. Credo sia appunto un limite di exel che non permette di ridimensionare a piacimento.
Questa è la routine:
Sub mappatura()
Dim arrTemp() As Integer, arrRif()
Dim iIni As Integer, iFine As Integer
iIni = 41
iK = 1
ReDim arrTemp(1 To 100, 1 To 2)
While Cells(iIni, 1).MergeArea.Count > 1
'ReDim Preserve arrTemp(iK, 2)
arrTemp(iK, 1) = iIni
With ActiveSheet
Set rng = Cells(iIni, 1)
With rng
iFine = iIni + .MergeArea.Rows.Count
arrTemp(iK, 2) = iFine - 1
End With
End With
iIni = ini + iFine
iK = iK + 1
Wend
ReDim preserve arrTemp(1 To UBound(arrTemp), 2)
End Sub
Ho pure pensato di trasferire l'array arrTemp in un altro già ridimensionato, ma non so bene se sia possibile.
Se nessuno ha qualche suggerimento, mi terrò il limite iniziale a 100, ma credo sia uno spreco di spazio inutile.
Grazie in anticipo.