我目前正在尝试在继续之前在一个范围内找到我的数组中的至少一个项目,但我目前正在进行的方式检查所有值是否在范围内。
If Not accountRange.find(Array(11571, 11572, 11573, 11574, 11575)) Is Nothing Then
理想情况下,我有这样的事情:
If Not accountRange.find(Array(11571, xlOr, 11572, xlOr, 11573, xlOr, 11574, xlOr, 11575))
我能看到的唯一解决方法是单独检查每个条件,如下所示:
If Not accountRange.find(11571) Is Nothing Or _
Not accountRange.Find(11572) Is Nothing Or _
Not accountRange.Find(11573) Is Nothing Or _
Not accountRange.Find(11574) Is Nothing Or _
Not accountRange.Find(11575) Is Nothing Then
但是当我在范围内检查更多东西时,这显然会变得乏味。
有什么建议吗?
答案 0 :(得分:3)
你可以写一个这样的函数:
Function ValInRange(vals As Variant, R As Range) As Boolean
Dim item As Variant
For Each item In vals
If Not R.Find(item) Is Nothing Then
ValInRange = True
Exit Function
End If
Next item
End Function
如果其中一个传递的数字在范围内,ValInRange(Array(11571, 11572, 11573, 11574, 11575), accountRange)
将返回True
。否则,它返回默认的布尔值False
。