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

问题描述 投票:0回答:1

我正在使用 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 语句中使用它但没有成功。

我在这里错过了一些非常简单的东西吗?谷歌上没有关于 vbscript For 循环的文档暗示任何不同的用法。我也没有发现任何关于 QTP 的内容。

谢谢,

杰森

for-loop vbscript iterator qtp
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.