If the code I posted colours the wrong sheet, then the ranges were added incorrectly. The code that sets up the array should look like:
Dim pos_canaletas(1 To 34) As Variant
With ThisWorkbook.Sheets("SIMULACIÓN")
For i = 1 To 34
If i <= 8 Then
Set pos_canaletas(i) = .Range(.Cells(i1, 4), .Cells(i1, 8))
i1 = i1 + 2
ElseIf i <= 11 Then
Set pos_canaletas(i) = .Range(.Cells(i2, 4), .Cells(i2, 8))
i2 = i2 + 2
ElseIf i <= 14 Then
Set pos_canaletas(i) = .Range(.Cells(i3, 13), .Cells(i3, 18))
i3 = i3 - 2
ElseIf i <= 22 Then
Set pos_canaletas(i) = .Range(.Cells(i4, 13), .Cells(i4, 18))
i4 = i4 - 2
ElseIf i <= 28 Then
Set pos_canaletas(i) = .Range(.Cells(4, j1), .Cells(9, j1))
j1 = j1 + 2
Else
Set pos_canaletas(i) = .Range(.Cells(13, j2), .Cells(18, j2))
j2 = j2 + 2
End If
Next
End With