Sub test()
Dim L1 As Long, L2 As Long, L3 As Long, L4 As Long
Dim Rng1 As Excel.Range
Dim arr1() As Variant
Set Rng1 = [foglio1!a1:b60000]
arr1 = Rng1.Value
'viene ridimensionata in automatico
'la matrice in questo modo:
'redim arr1(1 to numeroRighe, 1 to numeroColonne)
L2 = UBound(arr1, 1) 'totale righe
L4 = UBound(arr1, 2) 'totale colonne
For L1 = 1 To L2
For L3 = 1 To L4
'scorri tutti gli elementi
'e se vuoti scrivo pippo
If IsEmpty(arr1(L1, L3)) Then
arr1(L1, L3) = "pippo"
End If
Next
Next
'su un nuovo foglio carico su un range
'i valori appena ricalcolati
'nota che non è necessario ne disattivare
'il calcolo automatico ne l'aggiornamento dello
'schermo, come neppure gli eventi per velocizzare
'le operazioni ... tutto avviene in memoria
'e l'operazione è velocissima
Set Rng1 = ThisWorkbook.Worksheets.Add().Range("A1")
Set Rng1 = Rng1.Resize(L2, L4)
Rng1.Value = arr1
End Sub
|