Array aus einer Zelle
25.10.2020 10:54:55
HannesStein
Wie kann man ein Array aus einem Range erstellen, auch wenn es nur eine Zelle ist?
In folgendem Beispiel wird ein Array erstellt und dann weiter verwendet. Erst aus einem Range mit 5 Zellen, das geht. Dann aus einem Range mit 1 Zelle. Die Weiterverarbeitung des Array führt zu einem Fehler. Das ist doch inkonsistent, oder?
In einem leeren Blatt "Aufruf" starten.
Option Explicit
Sub Aufruf()
Dim a As Range, b As Range
Set a = Range("B2:B6")
Set b = Range("E5")
'Geht:
a.Value = "Apfel"
Debug.Print UBound(Feld(a), 1)
'Geht nicht, weil nur eine Zelle:
b.Value = "Apfel"
Debug.Print UBound(Feld(b), 1)
End Sub
Function Feld(Zelle As Range) As Variant
Dim Liste As Range
'Liste erstellen. Zuerst mal eine Zelle
Set Liste = Zelle(1) 'Erste Zelle der Liste
'Liste wird erweitert, falls unter Zelle noch was steht
If Liste.Offset(1) "" Then Set Liste = Range(Liste, Liste.End(xlDown))
'Werte der Liste werden in Array kopiert
Feld = Liste
End Function
Wie muss man die Arrayerstellung, also die Funktion "Feld" in untenstehendem Beispiel, gestalten? Der Debug.Print-Befehl ist der Nachweis, dass das Array existiert. In Wirklichkeit geht es da erst richtig los mit dem Makro.
Gruss, Hannes