当原始MATLAB函数中存在varargin和/或varargout时,这些参数将作为列表中最后的输入/输出参数被添加到类方法的参数列表中,可以创建一个Variant型数组。指定数组的元素为各个输入参数,并用该数组进行传递。
下面的例子创建一个varargin数组,以便调用一个由形如y=foo(varargin)的MATLAB函数生成的方法。
code.excel vba
Function foo(x1 As Variant, x2 As Variant, x3 As Variant, _
x4 As Variant, x5 As Variant) As Variant
Dim aClass As Object
Dim v(1 To 5) As Variant
Dim y As Variant
On Error Goto Handle_Error
v(1)=x1
v(2)=x2
v(3)=x3
v(4)=x4
v(5)=x5
aClass=text-blue-400">CreateObject("mycomponent.myclass.1_0")
'调用aClass的一些方法
Call aClass.foo(1,y,v)
foo=y
Exit Function
Handle_Error:
foo=Err.Description
End Function
下面将一个varargout参数分成3个Excel Range参数,foo过程用到了MWComUtil工具库中的MWUnpack函数,用到的MATLAB函数为varargout=foo(x1,x2)。
code.excel vba
Function foo(Rout1 As text-blue-400">Range, Rout2 As text-blue-400">Range, Rout3 As text-blue-400">Range, _
Rin1 As text-blue-400">Range, Rin2 As text-blue-400">Range)
Dim aClass As Object
Dim aUtil As Object
Dim v As Variant
On Error Goto Handle_Error
aUtil=text-blue-400">CreateObject("MWComUtil.MWUtil")
aClass=text-blue-400">CreateObject("mycomponent.myclass.1_0")
Call aClass.foo(3,v, Rin1,Rin2)
Call aUtil.MWUnpack(v,0,True,Rout1,Rout2,Rout3)
Exit Sub
Handle_Error:
foo=Err.Description
End Function