请教:VBS如何把函数作为另一个函数的参数使用?
如题 原帖由 souchy 于 2010-7-27 17:12 发表 http://bbs.51testing.com/images/common/back.gif如题
直接用
Function parameterA()
parameterA = 1
End Function
Function parameterB()
parameterB = 2
End Function
Function Add(A,B)
Add = A + B
End Function
msgbox Add(parameterA,parameterB) 谢谢楼上的回复,我发觉是我原来提的问题出了错!
其实我原意是想问怎么在一个函数中如何调用另一个函数,最初想通过函数的参数把另一个函数作为参数来调用,不过反复尝试之后,始终得到 类型不匹配 的提示
被调用的函数是没有返回值的,所以可能和参数有所冲突
传递变量或者参数传值
使用变量赋值后传递、直接调用也行啊,好像没啥限制吧。 我的初衷是把每个脚本中都要用到的部分独立出来,形成一个函数,而把各脚本独有的内容放入另一个无返回值的函数中,然后通过公共函数调用私有函数楼上说的赋值给变量,那是针对有返回值的函数,我这里相当于一个程序块,没有返回值的
回复 5# 的帖子
你是不是想要这种方式做?Function parameterA()
parameterA = 1
End Function
---把parameterA封装在一个叫ParameterA.VBS
Function parameterB()
parameterB = 2
End Function
---把parameterA封装在一个叫ParameterB.VBS
Function add
A = executefile(c:\parameterA.vbs)
B = executefile(c:\parameterB.vbs)
add = A + B
End Function
----注:没有调试过,不知道executefile(c:\parameterA.vbs)能不能返回值出来,如果可以请告知我
[ 本帖最后由 xhhuang1618 于 2010-7-28 23:18 编辑 ] 感谢楼上提供的思路,我没有机会测试这种方法,因为我需要的不是这种形式的。
其实也怪我一直没有表达清楚我想要什么,我下面贴段代码来表述我想要什么,以便大家一起探讨.
由于我很多脚本中都用到了下面这个结构
sName=DataTable.GetSheet(dtlocalsheet).Name
DataTable.ImportSheet "..\..\Data\"&"JTUn_Function_Data"&".xls","Merchant_Info_Search",sName
rowCount=DataTable.GetSheet(dtlocalsheet).GetRowCount
For n=1 to rowCount
DataTable.GetSheet(dtlocalsheet).SetCurrentRow n
......
Next
所以我就想把相同部分的代码独立出来设成一个可供调用的函数,而把其中各脚本独特的部分封装成一个函数(......省略的部分)
因而我就写成了如下形式:
Sub subA(ExcelName,SheetName,subB)
sName=DataTable.GetSheet(dtlocalsheet).Name
DataTable.ImportSheet "..\..\Data\"&"ExcelName"&".xls",SheetName,sName
rowCount=DataTable.GetSheet(dtlocalsheet).GetRowCount
For n=1 to rowCount
DataTable.GetSheet(dtlocalsheet).SetCurrentRow n
subB
Next
然后去调用
subA "JTUn_Function_Data","Merchant_Info_Search",subB
虽然逻辑很简单,但显然有什么地方不对,在将subB作为参数时,执行时报 类型不匹配 的错,查了一下资料,没有找到VBS支持通过参数传入函数的内容,故发帖请教大家!
一个简单的例子:SubB()以变量形式传给subA
subA("SubB()")Sub subA(a)
print"开始执行subA"
Executea '调用SubB()
End Sub
Sub SubB()
print"开始执行Sub B"
End Sub
[ 本帖最后由 feiyunkai 于 2010-7-30 18:02 编辑 ] 谢谢楼上的回复,周一上班的时候我去试试
页:
[1]