我正在尝试根据“是”状态调用一些操作并使用列名称,例如Login,Header,Footer等,如下表(link)
下面是代码:(跳过excel加载和其他部分)和每个列名称的Action,例如Login,Header,Footer等
iRowCount= DataTable.GetSheet("Main").GetRowCount()
iColumnCount=DataTable.GetSheet("Main").GetParameterCount
For iR = 1 To iRowCount
DataTable.SetCurrentRow iR
bRun=Datatable.Value("Run","Main")
If UCase(bRun)= "YES" Then
For iC = 5 To iColumnCount
bComponent= Datatable.Value(iC,"Main")
If ucase(bComponent) ="YES" Then
sModule=DataTable.GetSheet("Main").GetParameter(iC).Name
print sModule
RunAction sModule, oneIteration
End If
Next
End If
Next
即使第二行中的页脚不是“是”,仍然会调用该操作
我使用Print Statement来显示Action名称 输出是
Login
Header
Footer
SecondaryNavigation
Login
Header
Footer
SecondaryNavigation
然而,当我不使用
时RunAction sModule, oneIteration
然后输出变为
Login
Header
Footer
SecondaryNavigation
Login
Header
Cookiemessage
SecondaryNavigation
我无法找出错误,当我不调用操作时,代码工作正常,但是当我使用Action调用执行时,它遵循第1行状态而不是第2行状态< / p>
答案 0 :(得分:0)
您隐藏了C列。
因此“页脚”列的索引实际上是6而不是5.
所以你的循环应该从6迭代到列数,而不是5。
Windows领域许多IT年的经验:继续寻找宽度= 0的Excel列,否则您将浪费生命寻找实际上缺少信息或错误的列假设的错误:O
即使第二行中的页脚不是“是”仍然是动作 被称为
这是因为实际上,由于刚刚概述的怪癖,正在使用“Header”单元格值,并且该行的“是”。