souchy 发表于 2010-7-27 17:12:50

请教:VBS如何把函数作为另一个函数的参数使用?

如题

xhhuang1618 发表于 2010-7-27 19:35:02

原帖由 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)

souchy 发表于 2010-7-28 12:28:35

谢谢楼上的回复,我发觉是我原来提的问题出了错!
其实我原意是想问怎么在一个函数中如何调用另一个函数,最初想通过函数的参数把另一个函数作为参数来调用,不过反复尝试之后,始终得到 类型不匹配 的提示
被调用的函数是没有返回值的,所以可能和参数有所冲突

JackieChan 发表于 2010-7-28 16:26:37

传递变量或者参数传值

使用变量赋值后传递、直接调用也行啊,好像没啥限制吧。

souchy 发表于 2010-7-28 17:32:23

我的初衷是把每个脚本中都要用到的部分独立出来,形成一个函数,而把各脚本独有的内容放入另一个无返回值的函数中,然后通过公共函数调用私有函数

楼上说的赋值给变量,那是针对有返回值的函数,我这里相当于一个程序块,没有返回值的

xhhuang1618 发表于 2010-7-28 23:17:05

回复 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 编辑 ]

souchy 发表于 2010-7-30 16:01:42

感谢楼上提供的思路,我没有机会测试这种方法,因为我需要的不是这种形式的。
其实也怪我一直没有表达清楚我想要什么,我下面贴段代码来表述我想要什么,以便大家一起探讨.
由于我很多脚本中都用到了下面这个结构
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支持通过参数传入函数的内容,故发帖请教大家!

feiyunkai 发表于 2010-7-30 17:59:28

一个简单的例子: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 编辑 ]

souchy 发表于 2010-7-31 14:06:36

谢谢楼上的回复,周一上班的时候我去试试
页: [1]
查看完整版本: 请教:VBS如何把函数作为另一个函数的参数使用?