对于VBScript(QTP)中的循环不起作用

时间:2012-03-05 19:19:13

标签: vbscript for-loop qtp next

我正在使用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的内容。

谢谢,

杰森

1 个答案:

答案 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