在vba中调用自身的函数

时间:2015-07-10 19:11:59

标签: vba

这是我在Latch的帮助下最后得到的代码,这将是一个简单的例子,它以递归的方式改变全局集合中的值,现在是完全功能性的

Public List_of_data As New Collection

Sub main()

ClearCollection List_of_data

List_of_data.Add 7.5

List_of_data.Add 1

Recursive_function List_of_data

End Sub

Public Sub ClearCollection(parmCol As Collection)

Set parmCol = New Collection

End Sub

Public Function Recursive_function(ByRef List_of_data As Collection)

Dim x1

x1 = List_of_data.Item(1)

Dim x2

x2 = List_of_data.Item(2)

If x1 > x2 Then

ClearCollection List_of_data

List_of_data.Add x1

List_of_data.Add x2 + 1

Call Recursive_function(List_of_data)

End If

End Function

2 个答案:

答案 0 :(得分:1)

您正在将参数传递给不带任何参数的函数。将您的功能更改为:

Public Function Calculo_de_Dientes_Epicicloidales(byref lista_de_datos)

会得到你想要的结果。

此外,您可以简单地执行以下操作,而不是循环以清空您的收藏:

Public Sub ClearCollection(parmCol As Collection)

    set parmCol = new collection

End Sub

答案 1 :(得分:0)

你不能打电话"一个功能。功能提供结果;你需要设置一些等于你的函数的变量。如果您只需要运行代码,并且不需要它来为您提供特定的变量结果,那么将其设为sub,而不是函数。

另外,你有"结束功能"在你为我们复制的最后一行之下?