我想仅在单元格范围内根据文本创建数据验证列表。从范围获取文本-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