我很擅长在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
,因为它目前给我语法错误。非常感谢你的帮助。
答案 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