|
本帖最后由 huxbop 于 2019-10-18 15:20 编辑
- arr_tj = WorkbooksToArr(sPath, "工作簿名", "表名")
- arr_cb = WorkbooksToArr(sPath, "工作簿名", "Sheet1")
- For i = 2 To iRow
- a=FindArr4Value(MyFind, arr_tj, str1, str2, str3, str4, str5)
- b=FindArr4Value(MyFind, arr_cb, str1, str2, str3, str4, str5)
- ....
- Next
复制代码 如上面代码片段所示,我先将对应表里的数据 存放到数组 arr_tj 和 arr_cb 里 在当前表 里 做循环的时候,分别调用自定义函数 FindArr4Value在运行到 b=FindArr4Value(MyFind, arr_cb, str1, str2, str3, str4, str5) 的时候 报错,检查发现 FindArr4Value 函数 这个时候并没有传入 对应的arr_cb数组,还是原先第一次的数组,造成获取不到对应的列.
FindArr4Value 自定义函数代码如下,请高人指点下.如何才能让传入的数组会变成后传入的.不知道表达清楚了没有,才学VBA 有些实际的概念的东西还不是很懂.
- '用关键词到数组里给出数据所在列标题,以及要输出列的名称就自动查找到所要的数据
- Function FindArr4Value(ByVal iValue As String, arr(), ByVal ToValue As String, ByVal GetValue1 As String, ByVal GetValue2 As String, ByVal GetValue3 As String, ByVal GetValue4 As String) As String
-
- Dim Column1, Column2, Column3, Column4, Column5, i As Long '定义存放列的变量
- Dim str1, str2, str3, str4 As String '定义字符串类的变量
-
- Column1 = GetArrColumn(ToValue, arr) '调用GetArrColumn 获取被查找项所在列数
- Column2 = GetArrColumn(GetValue1, arr) '调用GetArrColumn 获取查到后要显示的列数
- Column3 = GetArrColumn(GetValue2, arr) '调用GetArrColumn 获取查到后要显示的列数
- Column4 = GetArrColumn(GetValue3, arr) '调用GetArrColumn 获取查到后要显示的列数
- Column5 = GetArrColumn(GetValue4, arr) '调用GetArrColumn 获取查到后要显示的列数
-
-
- For i = UBound(arr) To 1 Step -1 '从最后一行循环到数组的第一行
- If arr(i, Column1) = iValue Then '循环查找到要查的关键词所在的行
- FindArr4Value = "【" & GetValue1 & ":" & str1 & "】【" & GetValue2 & ":" & str2 & "】【" & GetValue3 & ":" & str3 & "】【" & GetValue4 & ":" & str4 & "】"
- Exit For
- End If
- Next
-
- End Function
复制代码
|
|