下面这段代码能否将数组arr1中含有数组arr2中的值去掉后重新生成新的数组arr1??? arr1(0) = "aaa"
arr1(1) = "bbb"
arr1(2) = "ccc"
..... arr2(0) = "bbb"
.....
For e = 0 To UBound(arr2) - 1
For d = 0 To UBound(arr1) - 1
If arr1(d) = arr2(e) Then
If d <= UBound(arr1) - 1 Then
arr1(d) = arr1(d + 1)
End If
End If
Next
ReDim Preserve arr1(UBound(arr1) - 1)
Next
arr1(1) = "bbb"
arr1(2) = "ccc"
..... arr2(0) = "bbb"
.....
For e = 0 To UBound(arr2) - 1
For d = 0 To UBound(arr1) - 1
If arr1(d) = arr2(e) Then
If d <= UBound(arr1) - 1 Then
arr1(d) = arr1(d + 1)
End If
End If
Next
ReDim Preserve arr1(UBound(arr1) - 1)
Next
可以使用万能公式:UBound(arr1) - LBound(arr1) + 1计算数组的元素个数.
For e = LBound(arr2) To UBound(arr2)
For d = LBound(arr2) To UBound(arr1)
If arr1(d) = arr2(e) Then
'If d <= UBound(arr1) - 1 Then'没有意义
arr1(d) = arr1(d + 1)
'End If
End If
Next
ReDim Preserve arr1(UBound(arr1) - 1)
Next
InputStrings 必需的。要执行搜索的一维字符串数组。
Value 必需的。要搜索的字符串。
Include 可选的。Boolean值,表示返回子串包含还是不包含Value字符串。如果Include是True,Filter返回的是包含Value子字符串的数组子集。如果Include是False,Filter返回的是不包含Value子字符串的数组子集。
Compare 可选的。数字值,表示所使用的字符串比较类型。有关其设置,请参阅下面的“设置值”部分。
设置值Compare参数的设置值如下:常数 值 描述
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 只用于Microsoft Access。基于您的数据库信息来执行比较。
说明如果在InputStrings中没有发现与Value相匹配的值,Filter返回一个空数组。如果InputStrings是Null或不是一个一维数组,则产生错误。Filter函数所返回的数组,其元素数目刚好是所找到的匹配项目数。