如何检测表格控件中的彩色单元格

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

我对 t 代码 FEBA 中的表格有疑问,该表格用于电子银行对账单。我正在尝试检测是否选择了某个项目。在屏幕截图中,您可以看到选中的项目以蓝色字体显示,而未选中的项目则以正常字体颜色显示:

enter image description here

我有以下代码来循环每一行,但我找不到方法来检查是否选择了某个项目。你能帮我改进这个吗?

这是我尝试修改以执行此检查的行:

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
vba scripting sap-gui
1个回答
0
投票

所以,您正在谈论一个 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
© www.soinside.com 2019 - 2024. All rights reserved.