Arrays 数组中的唯一字符串,ubound筛选器存在问题

Arrays 数组中的唯一字符串,ubound筛选器存在问题,arrays,excel,vba,Arrays,Excel,Vba,好的,我想出了一个非常复杂的方法来给我的表分配唯一的数字,例如RB-001,RB-002。因此,根据我从debug.print中看到的情况,代码基本上以串联形式将所有现有的元素添加到一个数组(TypeNumArr)中。但是,代码的第二位在UBound(filter(TypeNumArr,cred))处失败,出现错误13类型不匹配。我以前曾使用Ubound(过滤器)搜索数组中的唯一条目,但这些数组严格来说是一维的。有人知道这个有什么问题吗?我怀疑这与TypeNumArr的非一维性有关,因为它是从二

好的,我想出了一个非常复杂的方法来给我的表分配唯一的数字,例如RB-001,RB-002。因此,根据我从
debug.print
中看到的情况,代码基本上以串联形式将所有现有的元素添加到一个数组(TypeNumArr)中。但是,代码的第二位在
UBound(filter(TypeNumArr,cred))
处失败,出现错误13类型不匹配。我以前曾使用Ubound(过滤器)搜索数组中的唯一条目,但这些数组严格来说是一维的。有人知道这个有什么问题吗?我怀疑这与TypeNumArr的非一维性有关,因为它是从二维的SBArr中得出定义的

如果有人有一个不太复杂的方法来给前缀分配唯一的数字,比如“RB-”&“001”,“002”等等,那也太好了:p

'Making a new entry on SB & Reimb
Set TSB = .Worksheets("SB & Reimb").ListObjects(1) 'table name
Set RBrow = TSB.ListRows.Add(1) 'the new row, always add to the top

'Assigning the next # for the RB
SBArr = TSB.DataBodyRange.Value2

For lcount = LBound(SBArr) To UBound(SBArr)
SBArr(lcount, 2) = Right("00" & SBArr(lcount, 2), 3)
TypeNumArr = SBArr(lcount, 1) & "-" & SBArr(lcount, 2)
Debug.Print TypeNumArr
Next lcount

For cred1 = 1 To 999
    cred2 = Right("00" & cred1, 3)
    cred2 = "RB-" & cred2
    Select Case UBound(Filter(TypeNumArr, cred2))
    Case 0
        RBrow.Range(1, 2) = cred1 'all that hard work just to assign a value to the RB
        Exit For
    Case Else
    End Select
Next cred1

如果我想从包含重复项的列表中获取唯一项的列表,我将该列表放入字典的键中,所有重复项都将被丢弃。字典对象位于microsoft脚本运行库中

Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
'Set d = New Scripting.Dictionary

Dim i As Long
For i = LBound(myArray) To UBound(myArray)
    d(myArray(i)) = 1
Next i

Dim v As Variant
For Each v In d.Keys()
    'd.Keys() is a Variant array of the unique values in myArray.
    'v will iterate through each of them.
Next v

在调试时,最好将多个函数调用拆分到单独的行中,这样您就可以知道哪一个正在中断。在这种情况下,问题是
UBound
还是
Filter
?谁知道呢。如果我不得不猜测的话,我会说问题是
Filter
,因为它希望在第一个参数中看到一个数组,而您正在传入一个
字符串。也就是说,
TypeNumArr
基于
…&"-" & ... 将返回一个字符串。如果我在这里运行类似的代码,
Filter(“abcd”,“d”)
,我会像你一样得到
类型不匹配。您可能需要使用
InStr()…>0
如果只是检查值是否包含数字。