Excel VBA:查找范围中的对象

时间:2016-04-25 17:02:10

标签: excel excel-vba vba

我正在尝试编写Excel VBA函数。用户输入2个参数,函数检查第一个参数是否在第二个参数中,返回TRUEFALSE。我已经把它作为一个子程序而不是一个函数。我错过了什么?

这可能是非常基本的,但它给了我一些问题。

谢谢!

**我意识到我可以使用数组而不是集合,但如果可能的话我会更喜欢它

编辑:更详细地描述问题:我希望确定input_cell范围内是否找到list中的值,而不是input_cell位于list #VALUE!范围。Function INRANGE(input_cell As Range, list As Range) As Boolean Dim coll As New Collection '*******Add items to coll********' 'Find size of collection Dim LastRow As Long LastRow = list.Rows.Count 'Cells(Rows.Count, input_cell.Column).End(xlUp).Row 'Add rows to collection Dim i As Integer For i = list.Row To LastRow coll.Add Cells(i, list.Column).Value Next i '*******Search collection********' Dim Current_Cell As Variant Dim isInList As Boolean isInList = False Dim k As Integer 'Count of loop through list For k = list.Row To LastRow If input_cell = coll(k) Then isInList = True End If Next k INRANGE = isInList End Function

当我输入两个值时,它会返回{{1}}错误

{{1}}

1 个答案:

答案 0 :(得分:0)

虽然收藏不是我的强项,但我相信你错过的是为收藏添加钥匙。以下编辑应该有效:

Dim i As Integer
For i = list.Row To LastRow
    coll.Add Cells(i, list.Column).Value, Cells(i, list.Column).Value
    Next i