データ検証にユーザー定義関数を使用する

データ検証にユーザー定義関数を使用する

ユーザー定義関数の結果である名前付き範囲を作成しました。

たとえば、私の怒りに名前が付けられ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 を使用したかった理由なので、残念ですが、他の目的には役立つかもしれません。

関連情報