我正在使用QTP 11.0,它使用VBScript作为它的“语言”。
我有以下四行代码:
For x = 1 to 8
msgbox(x)
update1 = SwfWindow("NextGen File Maintenance").SwfWindow("SIM Library Configuration").SwfObject("spreadCtl").Object.ActiveSheet.GetValue(x,2)
Next
返回值为:
1 3 3 3 3 3 ......永远
我似乎无法在vbscript for循环中使用计数器变量而不会以某种方式损坏 - 无论变量的名称是什么。我甚至尝试将X分配给另一个变量并在我的GetValue语句中使用它并没有成功。
我在这里错过了一些非常简单的东西吗? Google上没有关于vbscript的文档For循环意味着任何不同的用法。我没有发现任何关于QTP的内容。
谢谢,
杰森
答案 0 :(得分:2)
这很奇怪,我假设如果您删除循环中的第二行并离开MsgBox
,则x
会正确递增。
也许ActiveSheet.GetValue
通过引用获取第一个参数并修改它。你说你试过使用一个临时变量并且它没有用,你试过这样的事吗?
For x = 1 to 8
tmp = x
update1 = SwfWindow("NextGen File Maintenance").SwfWindow("SIM Library Configuration").SwfObject("spreadCtl").Object.ActiveSheet.GetValue(tmp, 2)
MsgBox("x=" & x & " tmp=" & tmp)
Next
如果问题是GetValue
确实改变了索引,你可以尝试使用索引值的函数,然后在循环中使用它。
Public Function GetVal(ByVal index)
GetVal = SwfWindow("NextGen File Maintenance").SwfWindow("SIM Library Configuration").SwfObject("spreadCtl").Object.ActiveSheet.GetValue(index, 2)
End Function