循环SAP表触发VBA运行时错误614,求非空行遍历解决方案
SAP VBA遍历表格:解决空白行报错614及非空白行遍历方案
问题根源
SAP表格的RowCount方法返回的是表格总行数(含空白/未初始化行),并非实际有数据的行数;当遍历到空白行时,ElementAt(J)会因对应元素不存在触发614错误(集合枚举器找不到指定索引元素)。
解决方案1:错误捕获跳过无效行
通过开启错误捕获,遇到614错误时直接退出循环,同时只处理非空白单元格的行:
Sub Process1() Dim SAP_table1 As Object Dim J As Integer Dim cellText As String ' 先绑定SAP表格对象(示例:替换为你的表格ID) ' Set SAP_table1 = session.FindById("wnd[0]/usr/tblSAPMZTEST_TBL") J = 0 ' SAP表格索引通常从0开始,需根据实际情况调整 Do On Error Resume Next cellText = SAP_table1.Columns.Item(1).ElementAt(J).DisplayedText ' 捕获614错误,说明已遍历到表格末尾 If Err.Number = 614 Then Exit Do End If On Error GoTo 0 ' 关闭错误捕获 ' 仅处理非空白行 If cellText <> "" Then ' 这里写入你的业务处理逻辑 Debug.Print "处理行 " & J + 1 & ": " & cellText End If J = J + 1 Loop End Sub
解决方案2:遍历Rows集合筛选有效行
直接遍历SAP表格的Rows集合,通过判断行内单元格内容筛选非空白行,同时规避索引越界问题:
Sub Process1() Dim SAP_table1 As Object Dim rowObj As Object Dim cellText As String ' 绑定SAP表格对象 ' Set SAP_table1 = session.FindById("wnd[0]/usr/tblSAPMZTEST_TBL") For Each rowObj In SAP_table1.Rows On Error Resume Next cellText = rowObj.Columns.Item(1).DisplayedText On Error GoTo 0 If cellText <> "" Then ' 业务处理逻辑 Debug.Print "处理行内容: " & cellText End If Next rowObj End Sub
额外提示
- SAP表格的列索引部分场景从0开始,若
Item(1)报错,可尝试改为Item(0) - 若需统计有效行数,可在遍历过程中添加计数器变量,每处理一行则计数器+1
内容的提问来源于stack exchange,提问作者Markuss
相关产品推荐
相关产品推荐

