2016-09-12 69 views
0

我需要创建一个函数,它将采用不同(不固定)数量的参数。然后它应该向服务器发出请求并根据第一个参数接收不同的数据。在VBA中动态声明udf Excel

E.g. = performMethod(“methodName”;“arg1”;“arg2”; ...)

主要思想是创建统一函数,它将取代所有其他函数并将所有逻辑移动到服务器端,这样我就可以添加新的功能在服务器上,而不需要替换客户端的excel文件。

所以我的想法是要定义函数“在旅途中”,所以用户将看到excel提示符,描述参数。我可以通过VBA实现吗?如果没有,有没有其他方法可以做到这一点?

+2

看一看参数数组。 http://www.tushar-mehta.com/publish_train/xl_vba_cases/1005%20ParamArray.shtml –

+0

@twone在下面看到我的回答,让我知道如果这就是你的意思 –

回答

2

Excel VBA也可以使用Parameter Arrays。所以下面的UDF

Public Function performMethod(methodName As String, ParamArray args() As Variant) As Variant 
Dim sArgs As String 
For Each arg In args 
    arg = arg 
    If VarType(arg) = vbVariant + vbArray Then 
    sArgs = sArgs & "; " 
    For Each itm In arg 
    sArgs = sArgs & itm & "," 
    Next 
    sArgs = Left(sArgs, Len(sArgs) - 1) 
    Else 
    sArgs = sArgs & "; " & arg 
    End If 
Next 
MsgBox methodName & sArgs 
performMethod = "done" 
End Function 

可以称为:

=performMethod("POST",1,"Test",2)

=performMethod("POST",A1:C1,A2:A4,A6,A2:B4)

=performMethod("GET",1,A1:B4,"Test")

=performMethod("Test",A1:C4)

2

您确定需要不同数量的参数吗?也许更好的想法是有一个参数,实际上是列表数组或变量的参数?