我对 t 代码 FEBA 中的表格有疑问,该表格用于电子银行对账单。我正在尝试检测是否选择了某个项目。在屏幕截图中,您可以看到选中的项目以蓝色字体显示,而未选中的项目则以正常字体颜色显示:
我有以下代码来循环每一行,但我找不到方法来检查是否选择了某个项目。你能帮我改进这个吗?
这是我尝试修改以执行此检查的行:
session.findById("wnd[0]/usr/tabsTS/tabpREST/ssubPAGE:SAPDF05X:6106/tblSAPDF05XTC_6106/txtDF05B-PSBET[11," & adjustedIndex & "]")
除此之外,还有另一种方法来检测选择:在屏幕截图中,如果选择了某个项目,我们可以按此行,但如果未选择,我们无法按它。
session.findById("wnd[0]/usr/tabsTS/tabpREST/ssubPAGE:SAPDF05X:6106/tblSAPDF05XTC_6106/txtDF05B-PSDIF[12," & adjustedIndex & "]")
完整代码:
Function LoopDataOriginal(session As Object)
Dim rowCount As Integer
Dim visibleRows As Integer
Dim scrollPos As Integer
Dim i As Integer
Dim adjustedIndex As Integer
Dim batchSize As Integer
Dim endRow As Integer
rowCount = session.findById("wnd[0]/usr/tabsTS/tabpREST/ssubPAGE:SAPDF05X:6106/tblSAPDF05XTC_6106").rowCount
visibleRows = session.findById("wnd[0]/usr/tabsTS/tabpREST/ssubPAGE:SAPDF05X:6106/tblSAPDF05XTC_6106").VisibleRowCount
batchSize = visibleRows
For scrollPos = 0 To rowCount - 1 Step batchSize
session.findById("wnd[0]/usr/tabsTS/tabpREST/ssubPAGE:SAPDF05X:6106/tblSAPDF05XTC_6106").verticalScrollbar.position = scrollPos
endRow = scrollPos + batchSize - 1
If endRow >= rowCount Then endRow = rowCount - 1
For i = scrollPos To endRow
adjustedIndex = i Mod visibleRows
Debug.Print session.findById("wnd[0]/usr/tabsTS/tabpREST/ssubPAGE:SAPDF05X:6106/tblSAPDF05XTC_6106/txtDF05B-PSDIF[12," & adjustedIndex & "]").Text
Debug.Print session.findById("wnd[0]/usr/tabsTS/tabpREST/ssubPAGE:SAPDF05X:6106/tblSAPDF05XTC_6106/txtDF05B-PSBET[11," & adjustedIndex & "]").Text
'to add to check for selected
Next i
Next scrollPos
End Function
所以,您正在谈论一个 GuiTableControl 对象。文档中列出了所有可能的方法。
您需要通过字段 ID 及其列/行坐标来获取单元格对象,这是一个 GuiVComponent 对象(如果您愿意,也可以通过表格控件对象的方法
GetCell
):
Set tableControl = session.findById("wnd[0]/usr/tabsTS/tabpREST/ssubPAGE:SAPDF05X:6106/tblSAPDF05XTC_6106")
Set cell = tableControl.findById("txtDF05B-PSBET[11," & relativeRowIndex & "]")
' OR
Set cell = tableControl.getCell(11,relativeRowIndex)
然后您将获得属性
highlighted
,如果单元格文本突出显示(如您所描述的那样为蓝色),则其值为 1,否则为 0:
msgbox cell.Highlighted