使用使用者定義的函數進行資料驗證

使用使用者定義的函數進行資料驗證

我創建了一個命名範圍,它是使用者定義函數的結果。

假設我的憤怒被命名List並具有三個項目,如果我選擇三個單元格並輸入=List並按Ctrl+ Shift+ Enter,我會在單元格中得到我的三個項目......所以一切看起來都很好。

如果我嘗試使用該範圍作為資料驗證來源(作為列表),我會收到“來源目前計算結果為錯誤”。

這是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 這是不可能的(參見這篇文章關於SO)。

長(呃)答案:有一個解決方法。使用者定義的函數必須傳回一個Range值,而不是一個陣列。所以解決方案是使用一次性工作表來「貼上」臨時資料。

由於避免臨時資料正是我想要使用 UDF 的確切原因,這太糟糕了,但它對其他人可能有一些用處。

相關內容