51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3443|回复: 8
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-7-27 17:12:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-7-27 19:35:02 | 只看该作者
原帖由 souchy 于 2010-7-27 17:12 发表
如题

直接用

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)
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-7-28 12:28:35 | 只看该作者
谢谢楼上的回复,我发觉是我原来提的问题出了错!
其实我原意是想问怎么在一个函数中如何调用另一个函数,最初想通过函数的参数把另一个函数作为参数来调用,不过反复尝试之后,始终得到 类型不匹配 的提示
被调用的函数是没有返回值的,所以可能和参数有所冲突
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-7-28 16:26:37 | 只看该作者

传递变量或者参数传值

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

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-7-28 17:32:23 | 只看该作者
我的初衷是把每个脚本中都要用到的部分独立出来,形成一个函数,而把各脚本独有的内容放入另一个无返回值的函数中,然后通过公共函数调用私有函数

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

使用道具 举报

该用户从未签到

6#
发表于 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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 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支持通过参数传入函数的内容,故发帖请教大家!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2010-7-30 17:59:28 | 只看该作者

    一个简单的例子:SubB()以变量形式传给subA

    subA("SubB()")
    Sub subA(a)
           print"开始执行subA"
           Execute  a       '调用SubB()
    End Sub

    Sub SubB()
          print"开始执行Sub B"
    End Sub

    [ 本帖最后由 feiyunkai 于 2010-7-30 18:02 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2010-7-31 14:06:36 | 只看该作者
    谢谢楼上的回复,周一上班的时候我去试试
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 06:50 , Processed in 0.072441 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表