注册 登录
编程论坛 VB6论坛

递归函数出错

yuk_yu 发布于 2017-05-12 16:52, 2429 次点击

我在网上找了一个函数,但调用时提示定义出错
该怎么调用?请指点

程序代码:
Function Traverse(ByVal PN As String, ByVal MakeBuy As String, ByVal Qty As Double, ByVal arr_Comp As Variant, ByVal BOM As Variant)
    j = 0
    For j = LBound(BOM) To UBound(BOM)    'Step through BOM
        If BOM(j, 1) = PN Then  'Parent found in array, is an assembly
            ReDim Preserve arr_Comp(0 To 3, 0 To UBound(arr_Comp, 2) + 1)
            arr_Comp(0, UBound(arr_Comp, 2)) = BOM(j, 2)    'child
            arr_Comp(1, UBound(arr_Comp, 2)) = UCase(BOM(j, 7))    'make/buy
            arr_Comp(2, UBound(arr_Comp, 2)) = BOM(j, 3) * Qty    'exploded qty
            arr_Comp(3, UBound(arr_Comp, 2)) = BOM(j, 1)    'Parent

            Debug.Print BOM(j, 2) & " (" & BOM(j, 7) & ") added to arr_Comp, BOM row " & j

            PN = BOM(j, 2)
            MakeBuy = UCase(BOM(j, 7))
            Qty = BOM(j, 3) * Qty
            If MakeBuy = "E" Then    'Keep progressing through BOM
                Call Traverse(PN, MakeBuy, Qty, arr_Comp(), BOM())
            End If
        End If
    Next j

End Function
7 回复
#2
xzlxzlxzl2017-05-13 16:26
不好看懂,如果提供一段调用范例(哪怕是错误的),或许好解答些。
#3
yuk_yu2017-05-15 09:33
回复 2楼 xzlxzlxzl
谢谢

[此贴子已经被作者于2017-5-18 12:02编辑过]

#4
xzlxzlxzl2017-05-15 21:34
vba原来写过的,我通常会在表格上加个按钮调用宏代码,可我现在都不知道怎么添加按钮了,要再百度了。
#5
风吹过b2017-05-15 22:09
我压根就没这样做过,看看有空来百度下不
#6
yuk_yu2017-05-16 08:53
回复 4楼 xzlxzlxzl
Alt + F11可以去看代码,我觉得VBA和VB差别不大就这么写了,但总出错,请帮忙看看
#7
yuk_yu2017-05-16 10:30
回复 5楼 风吹过b
版主,请有空帮忙看看,递归我似乎总不得要领!

#8
yuk_yu2017-05-17 09:29
递归应该是一个比较通用的方法,似乎没什么人关注,只好无解结贴了!谢谢大家
1