我創建了一個命名範圍,它是使用者定義函數的結果。
假設我的憤怒被命名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 的確切原因,這太糟糕了,但它對其他人可能有一些用處。