Ich habe einen benannten Bereich erstellt, der das Ergebnis einer benutzerdefinierten Funktion ist.
Nehmen wir an, mein Wutzustand trägt den Namen List
und besteht aus drei Elementen. Wenn ich drei Zellen auswähle, die Eingabetaste drücke =List
und Ctrl+ Shift+ drücke Enter, erhalte ich meine drei Elemente in den Zellen. Alles sieht also gut aus.
Wenn ich versuche, den Bereich als Datenvalidierungsquelle (als Liste) zu verwenden, erhalte ich die Meldung „Quelle wird derzeit als Fehler ausgewertet“.
Ist das eine Einschränkung von Excel? Wenn nicht, was ist falsch und was kann ich tun?
Die Funktion:
Public Function testarrayreturn() As Variant
Dim Arr(2) As String
Arr(0) = "a"
Arr(1) = "b"
Arr(2) = "c"
testarrayreturn = Application.Transpose(Arr)
End Function
Der benannte Bereich ist definiert alstestarrayreturn()
Antwort1
TL;DR so wie beschrieben ist es nicht möglich (vgl.dieser Beitrag auf SO).
Lange(re) Antwort: Es gibt eine Problemumgehung. Die benutzerdefinierte Funktion muss einen Range
Wert zurückgeben, nicht ein Array. Die Lösung besteht also darin, ein temporäres Arbeitsblatt zu verwenden, um temporäre Daten „einzufügen“.
Da das Vermeiden temporärer Daten genau der Grund ist, warum ich eine UDF verwenden wollte, ist das zwar schade, aber für andere kann es von Nutzen sein.