gpt4 book ai didi

vba - 检查一个值是否是列表的成员

转载 作者:行者123 更新时间:2023-12-01 18:35:06 25 4
gpt4 key购买 nike

  • 我必须根据项目列表检查一段用户输入;如果输入位于项目列表中,则以一种方式引导流程。如果没有,则将流量引导至另一个。
  • 此列表在工作表本身上可见;它必须在代码下进行混淆。

我想到了两种策略来做到这一点:

  1. 声明为枚举并检查输入是否是该枚举的一部分,尽管我不确定其语法 - 我是否需要初始化enum 每次我想使用它?
  2. 声明为数组并检查输入是否是该数组的一部分。

我想知道VBA在效率和可读性方面哪个更好?

最佳答案

您可以运行一个简单的数组测试,如下所示,将单词添加到单个列表中:

Sub Main1()
arrList = Array("cat", "dog", "dogfish", "mouse")
Debug.Print "dog", Test("dog") 'True
Debug.Print "horse", Test("horse") 'False
End Sub

Function Test(strIn As String) As Boolean
Test = Not (IsError(Application.Match(strIn, arrList, 0)))
End Function

或者,如果您想要进行更详细的搜索并返回子字符串匹配列表以供进一步工作,请使用Filter。如果查找 dog

,此代码将通过 vFilter 返回以下内容

dog, dogfish

在这种特殊情况下,代码会检查 dog 是否完全匹配。

Sub Main2()
arrList = Array("cat", "dog", "dogfish", "mouse")
Debug.Print "dog", Test1("dog")
Debug.Print "horse", Test1("horse")
End Sub

Function Test1(strIn As String) As Boolean
Dim vFilter
Dim lngCnt As Long
vFilter = Filter(arrList, strIn, True)
For lngCnt = 0 To UBound(vFilter)
If vFilter(lngCnt) = strIn Then
Test1 = True
Exit For
End If
Next
End Function

关于vba - 检查一个值是否是列表的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com