在VBA for Excel

时间:2016-09-12 07:40:41

标签: excel vba

我需要创建一个函数,它将采用不同(不固定)的参数。然后它应该对服务器执行请求,并根据第一个参数,接收不同的数据。

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

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

所以我的想法就是“随时随地”定义函数,这样用户就会看到excel提示符,描述参数。我可以通过VBA实现吗?如果没有,还有其他方法吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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)