我试图像这样在qtp中编写脚本
Public Function sayhi
msgbox "hi"
end
Dim level0
dim count1
count1 = DataTable.GetSheet("Action1").GetRowCount
msgBox count1
For counterVariable = 1 to count1
functionname = DataTable.value("methodnames","Action1")
call functionname
DataTable.GetSheet("Action1").SetCurrentRow(counterVariable)
Next
Run Code Online (Sandbox Code Playgroud)
假设functionname将具有一个值"sayhi".我可以使用该值来调用该函数吗?就像我在代码"call functionname"中所做的那样.
我知道它不起作用,但怎么做这样的电话?
Ekk*_*ner 12
使用GetRef()获取Sub或Function的'指针'/引用:
Option Explicit
Sub S1( s )
WScript.Echo "S1:", GetRef( "F1" )( s )
End Sub
Function F1( s )
F1 = UCase( s )
End Function
Dim sName : sName = "S1"
Dim subS1 : Set subS1 = GetRef( sName )
subS1 "abc"
Run Code Online (Sandbox Code Playgroud)
输出:
cscript getrefdemo.vbs
S1: ABC
Run Code Online (Sandbox Code Playgroud)
Option Explicit
function abc(a)
MsgBox a
End function
dim run : run = "abc ""Hallo"""
execute run
Run Code Online (Sandbox Code Playgroud)
execute方法可以做到这一点
Public Function sayhi
msgbox "hi"
end
Dim level0
dim count1
count1 = DataTable.GetSheet("Action1").GetRowCount
msgBox count1
For counterVariable = 1 to count1
functionname = "call " & DataTable.value("methodnames","Action1")
execute functionname
DataTable.GetSheet("Action1").SetCurrentRow(counterVariable)
Next
Run Code Online (Sandbox Code Playgroud)
如果它在数据表中,将调用sayhi.