Ich kenne Deine Umgebung,Deine Dateistruktur oder die Zusammensetzung Deines Arrays nicht und verlasse mich daher voll auf den Titel und meine Interpretation Deines Beitrags.
Wenn Du in einen gefilterten Bereich ein (zweidimensionales) Array schreiben willst, musst Du die Areas beachten.
Hier mal ein vereinfachtes Praxisbeispiel:
Ausgangstabelle:
Quellcode:
Sub Test01()
Dim arr(1 To 3, 1 To 1) As Variant
Dim rng As Excel.Range
Dim rngInsect As Excel.Range
Dim i As Long
arr(1, 1) = "x"
arr(2, 1) = "xx"
arr(3, 1) = "xxx"
Set rng = ThisWorkbook.Worksheets(1).Range("A1:A10")
rng.AutoFilter Field:=1, Criteria1:="0"
Set rngInsect = Intersect(rng, rng.Offset(1, 0), rng.SpecialCells(xlCellTypeVisible))
If Not rngInsect Is Nothing Then
For i = 1 To rngInsect.Areas.Count
rngInsect.Areas(i).Cells(1, 1).Resize(UBound(arr, 1), UBound(arr, 2)).Value = arr
Next i
End If
rng.AutoFilter
End Sub
Ergebnis:
Wie gesagt, einfach eben.
Keine Fehlerbehandlung oder sonstig zu beachteneden Schnick-Schnack der zu Laufzeitfehlern führen kann.
Das kann jeder selbst besser.
Klar soweit?
|