Ich glaube, Jook's Lösung ist so gut, wie Sie bekommen werden, wenn es wichtig ist, die Quellbereiche in ein Array zu bekommen. Ich denke jedoch, dass die Lösung Anweisungen zum Extrahieren von Werten aus einem unregelmäßigen Array enthalten sollte. Dies ist nicht schwierig, aber die Syntax ist unklar.
Ich kann Ihre Union
Anweisung auch nicht zum Scheitern bringen. Ich nehme an, dass es etwas über den Kontext gibt, der den Fehler verursacht, den ich nicht duplizieren kann.
Der folgende Code zeigt, dass die beiden Bereiche identisch sind und nur der erste Teilbereich in ein Array geladen wird, wie Sie berichtet haben. Es endet mit einem alternativen Ansatz, der zufriedenstellend sein könnte.
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
Verwenden Sie nur Split angewendet auf die Adresse des Bereichs, Trennzeichen wird "," –