【发布时间】:2018-02-14 23:17:23
【问题描述】:
我需要开发一个 UDF 来根据几个可能的条目检查单元格值,以检查单元格是否等于这些值中的任何一个。如您所见,我对如何进行此检查有一个想法。但是以一种可以接受多个可选条目的方式对函数进行编码对我来说并不清楚。例如,我正在寻找一些动态的东西,比如 EXCEL { CONCATENATE( text1, [ text2, ... text_n ] )} 中的 CONCATENATE。我对带有 5 个可选参数的此类函数的代码如下:
Function IfAmong(TextToCheck As String, Text1 As String, Optional Text2 As String, _
Optional Text3 As String, Optional Text4 As String, Optional Text5 As String,_
Optional text6 As String) As Boolean
Dim dd As New Scripting.Dictionary
dd.CompareMode = TextCompare
dd.Add Text1, dd.Count
If Text2 <> "" Then dd.Add Text2, dd.Count
If Text3 <> "" Then dd.Add Text3, dd.Count
If Text4 <> "" Then dd.Add Text4, dd.Count
If Text5 <> "" Then dd.Add Text5, dd.Count
If text6 <> "" Then dd.Add text6, dd.Count
IfAmong = dd.Exists(TextToCheck)
dd.RemoveAll
End Function
我想让它与用户所需的可选条目的数量相关(就像连接一样)。如果可能的话,还可以通过循环自动检查条目。我尝试将文本添加为数组,但不起作用!
for i =2 to Ubound(text(i))
if text(i) <>"" then..........
next
我也无法做到这一点。
感谢和问候, M
【问题讨论】:
标签: vba excel user-defined-functions