ユーザー定義関数の結果である名前付き範囲を作成しました。
たとえば、私の怒りに名前が付けられList
、3 つの項目があるとします。3 つのセルを選択して Enter キーを押し、+ +=List
を押すと、セルに 3 つの項目が表示されます... つまり、すべて正常に見えます。CtrlShiftEnter
範囲をデータ検証ソース (リスト) として使用しようとすると、「ソースは現在エラーと評価されています」というメッセージが表示されます。
これは Excel の制限ですか? そうでない場合、何が問題で、どうすればいいですか?
関数:
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
名前付き範囲は次のように定義されますtestarrayreturn()
答え1
TL;DR 説明どおりには不可能です (cf.SOのこの投稿)。
長い(長い)答え:回避策があります。ユーザー定義関数は、Range
値の配列ではなく、を返す必要があります。したがって、解決策は、使い捨てのワークシートを使用して一時データを「貼り付ける」ことです。
一時データを回避することがまさに UDF を使用したかった理由なので、残念ですが、他の目的には役立つかもしれません。