我想僅在單元格範圍內根據文本創建數據驗證列表。從範圍獲取文本-VBA(Excel)
我搜索了配方,但我沒有找到任何東西,所以我決定做我自己的功能,但它不工作。
我試圖這些代碼:
代碼1:
Function ListFromRange(rng As Range) As Range
Dim cl As Range
Dim entry As Range
For Each cl In rng
If Not IsNumeric(cl.Value) Or cl.Value = "" Then
If entry Is Nothing Then
Set entry = cl
Else
Set entry = Union(entry, cl)
End If
End If
Next
Set ListFromRange = entry
End Function
代碼2:
Function ListFromRange2(rng As Range) As Variant
Dim cl As Range
Dim i As Integer
Dim entry() As String
ReDim entry(rng.Count)
For Each cl In rng
If Not IsNumeric(cl.Value) Or cl.Value = "" Then
entry(i) = cl.Value
i = i + 1
End If
Next
ListFromRange2 = entry
End Function
第二代碼工作,但是當我與定義的名稱,並使用該定義使用數據驗證列表的名稱它告訴我,在驗證列表源中存在錯誤,但是當我使用帶有索引的函數時,它返回所需的結果。
另外一些圖片來解釋更多:
我想要從包含文本單元列表,並在應用它:
但是,如果沒有數量值。
我想你想讓你'如果'語句實際上是'如果不是數字(cl.Value)而不是cl.Value =「」然後'。如果你不包括你的邏輯,那麼'Not'單獨適用於每個語句。在第一行也返回'Range'而不是'Variant'。最後,*你想要做什麼**做***?你其實沒有說過。目前你的函數返回一個包含非數字值的單元格區域......爲什麼這是錯誤的/你還希望它做什麼? – Wolfie
驗證列表對我的UDF不起作用,您在圖像中看到的是對整行的驗證,因此包含數值。 – Tima
好的,你是否按照上面的建議更新了你的邏輯?那你確定你正在清理並更新下拉列表中的值嗎?IsNumeric(「12,300」)沒有辦法返回false,所以你的邏輯沒問題,它必須是你沒有顯示哪個失敗的其他代碼。 – Wolfie