相当于" in" for If然后在VB Excel中

时间:2016-07-24 01:21:26

标签: vba excel-vba excel

我很擅长在Excel中使用VBA宏。我想检查一组其他字符串值中的字符串值。例如:cc中的("Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q")变量值为cc,其中Q6可能为If cc in ("Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q") Then

我的伪代码是:

in

我不知道应该使用哪个运算符代替in。那么,应该是什么而不是preferredFocusView,因为它目前给我语法错误。非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

如果找到匹配项,您可以使用Filter函数返回字符串数组。以你的例子:

UBound(Filter(Array("Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q"), "Q6", True, vbBinaryCompare))

返回1,但请注意,如果第三个参数为False,那么它将返回与输入不匹配的数组项,即5

更完整的例子:

Option Explicit

Sub Test()

    Dim varData As Variant
    Dim strCC As String
    Dim varFilter As Variant
    Dim intCounter As Integer

    varData = Array("Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q")
    strCC = "foo"
    varFilter = Filter(varData, strCC, True, vbBinaryCompare)
    For intCounter = LBound(varFilter) To UBound(varFilter)
        Debug.Print varFilter(intCounter)
    Next intCounter

End Sub

答案 1 :(得分:1)

Select Case语句可以很好地(并且有效地)完成此任务。 见http://www.exceltrick.com/formulas_macros/vba-select-case-statement/

Select Case cc
    Case "Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q"
        ' If ... Then
        ' Stuff you want to do if any of the above
    Case Else
        ' Else
        ' Whatever you if none of the above
End Select