我在Excel中使用VBA宏很新。我想檢查一組其他字符串值中的字符串值。例如:值cc
變量("Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q")
其中cc
可能是Q6
。如果在VB中使用「in」的等效Excel中的
我的僞代碼:
If cc in ("Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q") Then
我不知道要到位的in
什麼操作。那麼,應該怎樣而不是in
,因爲它目前給我的語法錯誤。非常感謝你的幫助。
我在Excel中使用VBA宏很新。我想檢查一組其他字符串值中的字符串值。例如:值cc
變量("Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q")
其中cc
可能是Q6
。如果在VB中使用「in」的等效Excel中的
我的僞代碼:
If cc in ("Q6", "_Q6", "1_Q", "2_Q", "3_Q", "4_Q") Then
我不知道要到位的in
什麼操作。那麼,應該怎樣而不是in
,因爲它目前給我的語法錯誤。非常感謝你的幫助。
的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
您可以使用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
那就是我所做的。這很簡單,高效:) – Santosh