Siéntete libre de divulgar nuestro espacio y códigos con otro, danos de tu ayuda para aumentar esta comunidad.
Solución:
No sé qué estaba mal con tu union
pero habría creado el mismo rango que indicó en su primer intento.
El problema es que ahora tienes múltiples áreas. Que puede, y hasta donde yo sé, tiene que abordar ahora.
He aquí un ejemplo, que se resolverá en un array de todas las áreas, sin agregar cada celda individualmente, pero agregando cada área individualmente al resumen array:
Public Sub demo()
Dim summaryTempArray() As Variant
Dim i As Long
With Tabelle1
ReDim summaryTempArray(1 To .Range("A2:D9,A11:D12,A14:D15").Areas.Count)
For i = 1 To .Range("A2:D9,A11:D12,A14:D15").Areas.Count
summaryTempArray(i) = .Range("A2:D9,A11:D12,A14:D15").Areas(i)
Next i
End With
End Sub
Espero que esto ayude.
Creo que la solución de Jook es tan buena como la que obtendrá si es importante obtener los rangos de origen en un array. Sin embargo, creo que la solución debería incluir instrucciones sobre la extracción de valores de un irregular array. Esto no es difícil, pero la sintaxis es oscura.
no puedo conseguir tu Union
declaración a fallar tampoco. Supongo que hay algo en el contexto que causa la falla que no puedo duplicar.
El siguiente código muestra que los dos rangos son iguales y que solo el primer subrango se carga en un array como usted informó. Termina con un enfoque alternativo que podría ser satisfactorio.
Option Explicit
Sub Test()
Dim CellValue() As Variant
Dim rng As Range
With Worksheets("Sheet1")
Set rng = .Range("A2:D9,A11:D12,A14:D15")
Debug.Print rng.Address
Set rng = Union(.Range("A2:D9"), .Range("A11:D12"), .Range("A14:D15"))
Debug.Print rng.Address
' The above debug statements show the two ranges are the same.
Debug.Print "Row count " & rng.Rows.Count
Debug.Print "Col count " & rng.Columns.Count
' These debug statements show that only the first sub-range is included the
' range counts.
CellValue = rng.Value
Debug.Print "Rows " & LBound(CellValue, 1) & " to " & UBound(CellValue, 1)
Debug.Print "Cols " & LBound(CellValue, 2) & " to " & UBound(CellValue, 2)
' As you reported only the first range is copied to the array.
rng.Copy Destination:=Worksheets("Sheet2").Range("A1")
' This shows you can copy the selected sub-ranges. If you can copy the
' required data straight to the desired destination, this might be a
' solution.
End With
End Sub
Recuerda que tienes la capacidad de agregar una reseña .