我正在使用this question中的一个函数,但是,它似乎不适用于我的情况。
基本上,这个脚本正在通过一列选择不同的值并arr
用它们填充数组。首先If
是检查列是否已经结束,然后为了避免调用空数组我有第一个IfElse
,最后我想检查一个非空数组的cell
字符串。如果它不存在,我想添加它。
Public Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
Sub SelectDistinct()
Dim arr() As String
Dim i As Integer
Dim cells As Range
Set cells = Worksheets("types").Columns("A").Cells
i = 0
For Each cell In cells
If IsEmpty(cell) Then
Exit For
ElseIf i = 0 Then
ReDim Preserve arr(i)
arr(UBound(arr)) = cell
i = i + 1
ElseIf IsInArray(cell.Value, arr) = False Then
ReDim Preserve arr(i)
arr(UBound(arr)) = cell
i = i + 1
End If
Next cell
End Sub
IsInArray
由于某种原因,它在函数调用时抛出“下标超出范围”错误。有人可以让我知道我哪里出错了吗?