Цикл массива из 5000 цветов и запись их в ячейки заняли гораздо меньше секунды, даже при включенном обновлении экрана.Есть ли другая причина, по которой вы не можете использовать цикл For
?
Sub Test()
Dim MyArray(0, 4999) As Variant
Dim i As Long
For i = 0 To 4999
MyArray(0, i) = WorksheetFunction.RandBetween(1, 40)
Next i
For i = 0 To 4999
Sheets("Data").Cells(i + 1, 1).Interior.ColorIndex = MyArray(0, i)
Next i
End Sub