【问题标题】:VBA - SAP GUI Scripting - Active Row numberVBA - SAP GUI 脚本 - 活动行号
【发布时间】:2022-01-17 22:32:51
【问题描述】:

我正在努力读取有效行号的代码。我搜索了这个论坛(和其他人)并尝试了几件事,但我没有让它运行......我在我的代码中做了一种查找,但是我需要行号(实际上是第一列的值)我搜索的参考编号。

test1 = session.FindById("wnd[0]/usr/tblSAPLV60PTCTRL_KOPIEREN").RowCount
' this returns the total number of records which is perfectly fine

test1 = session.FindById("wnd[0]/usr/tblSAPLV60PTCTRL_KOPIEREN").SetFocus
test1 = session.FindById("wnd[0]/usr/tblSAPLV60PTCTRL_KOPIEREN").CurrentRow
test1 = session.FindById("wnd[0]/usr/tblSAPLV60PTCTRL_KOPIEREN").VerticalScrollbar.Position
test1 = session.FindById("wnd[0]/usr/tblSAPLV60PTCTRL_KOPIEREN").getAbsoluteRow
test1 = session.FindById("wnd[0]/usr/tblSAPLV60PTCTRL_KOPIEREN").CurrentCellRow

收到此错误消息:

运行时错误 438 - 参考 SAP GUI 脚本已启用

请让我知道我错过了什么或做错了什么。

提前感谢您的指导

飞路

【问题讨论】:

  • 您似乎是手动编写代码,而不是使用记录器自动生成代码。如果您手动执行,请参考documentation 了解GuiTableControl 存在哪些属性和方法。

标签: user-interface sap-gui


【解决方案1】:

据我所知,您无法直接获取所选行的行号。 我使用的基本方法是循环所有行,然后检查它们是否已被选中,然后从那里采取行动,例如:

Dim objTable as Object
Dim objRow As Object
Dim numbRows As Long

Set objTable = session.findById("wnd[0]/usr/tblSAPLCMDITCTRL_3500")

With objTable
    numbRows = objTable.RowCount
    
    For r = 0 To (numbRows - 1)
        Set objRow = .GetAbsoluteRow(r)
        If objRow.Selected Then
            ' your action here ....
        End If
    Next r
End With

记住;你需要能够处理滚动额外的页面,否则你会得到一个错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    相关资源
    最近更新 更多