如何在VBA中编写具有大量条件的OR语句

我正在编写一个代码,我正在写一个IF语句。 代码就像这样。

If Cells(rw, col3).Value = "11312" Or Cells(rw, col3).Value = "21345"Or _ Cells(rw, col3).Value = "176" Or Cells(rw, col3).Value = "134" then Else Cells(rw, LC + 2).Value = "WRONG OCC code" Endif 

问题是,我有大约2000年这些OR条件。 当我试图把所有的条件,VBA说太复杂的代码或太多的延续陈述。 请帮我解决这个问题。

提前感谢你。

把所有的值放入一维数组(然后select你想填充的数组),然后使用下面的函数testing它们是否在数组中:

 Option Explicit Public Sub test() Dim arr() As Variant With ThisWorkbook.Sheets("AD") arr = Application.Transpose(.Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)).Value2) End With If IsInArray(Cells(rw, col3).Value, arr) Then Else Cells(rw, LC + 2).Value = "WRONG OCC code" End If End Sub 

 Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function 

或者干脆这个…

 arr = Array("11312", "21345", "176", "134") If Not IsError(Application.Match(CStr(Cells(rw, col3)), arr, 0)) Then MsgBox "Found!" Else Cells(rw, LC + 2).Value = "WRONG OCC code" End If 

编辑:如果你有一个很长的条件列表,最好列出他们所有的工作表,然后读取到一个数组。

以下代码假定您有一个名为“ 条件 ”的工作表,并且所有条件都从第1行开始列A列出。

然后你可以尝试下面的代码来产生相同的结果…

 Dim arr arr = Sheets("Criteria").Range("A1").CurrentRegion.Value If Not IsError(Application.Match(Cells(rw, col3), arr, 0)) Then MsgBox "Found!" Else Cells(rw, LC + 2).Value = "WRONG OCC code" End If