我正在尝试编写Excel VBA函数。用户输入2个参数,函数检查第一个参数是否在第二个参数中,返回TRUE
或FALSE
。我已经把它作为一个子程序而不是一个函数。我错过了什么?
这可能是非常基本的,但它给了我一些问题。
谢谢!
**我意识到我可以使用数组而不是集合,但如果可能的话我会更喜欢它
编辑:更详细地描述问题:我希望确定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}}
答案 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