附件2是文档,附件1是汇总后的excel。
需求是运行vba的时候,可以让用户自己选择路径,选择完路径后,程序对该路径下所有文档对标黄的字段提取出来,并汇总到excel中,需要支持2003版office使用。
但可以结合动态数组,将删除元素的数组赋值给新数组,如下代码。其中的b
数组便是删除元素后的新数组:
arr1 = Array(1, "特定条件", 3, 999, 1, "特定条件", 3) '定义一个数组
Dim b() As String '定义新数组
k = 0 '记录新数组的长度
For i = 0 To UBound(arr1) '用数组长度来判断是否遍历完成
If (InStr(1, arr1(i), "特定条件", 0) <= 0) Then
ReDim Preserve b(0 To k) '添加到新数组
b(k) = arr1(i)
k = k + 1
End If
Next
'结果是b = Array(1, 3, 999, 1, 3)
注意,用
UBound
获取数组长度,而不是Len
。在VBA中,Len
是用来获取Expression的长度的,如字符串长度;UBound
返回指定数组的最大下标。
注意2:当数组长度为0时,用UBound
获取长度会产生“下标越界”错误。所以这里用k作为新数组的长度值。