excel - 错误转到它不适用于 Excel VBA
问题描述
我正在为这个项目使用 excel VBA。
我正在尝试在 sap 上运行一个脚本,这将导致不同的补丁,具体取决于当前循环中出现的错误类型,并且我在 erro goto 上使用,因为这些不同的补丁只有在目前补丁面临一个错误。
我将突出显示由于某种原因会破坏代码的某些部分,并且如果出现错误,也不要转到我所说的补丁。
出现在这部分代码中的第一个错误:
Pula_popup01:
**Session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
On Error GoTo -1
On Error GoTo Pula_popup02**
出于某种原因,如果要按下的 sap 上不存在此底部,则应该引导我们进入下一步“Pula_popup02”如何,但这不会发生并且代码会中断。
这是完整的代码:
Sub SWO_Closed()
Set SapGUIAuto = GetObject("SAPGUI")
Set SAPApp = SapGUIAuto.GetScriptingEngine
Set SAPCon = SAPApp.Children(0)
Set Session = SAPCon.Children(0)
'
If IsObject(WScript) Then
WScript.ConnectObject Session, "on"
WScript.ConnectObject Application, "on"
End If
Dim objExcel
Dim objSheet, intRow, i
Set objExcel = GetObject(, "Excel.Application")
Set objSheet = objExcel.ActiveWorkbook.ActiveSheet
For i = 2 To objSheet.UsedRange.Rows.Count
Err.Clear
SWO = Trim(CStr(objSheet.Cells(i, 1).Value))
SWO_Status = Trim(CStr(objSheet.Cells(i, 2).Value))
Fechada = Trim(CStr(objSheet.Cells(i, 3).Value))
Status = ""
If SWO = "" Then
MsgBox "Macro finalizada!"
Exit Sub
End If
If SWO_Status = "Fechar" Then
'Session.findById("wnd[0]").maximize
Session.findById("wnd[0]/tbar[0]/okcd").Text = "/niw32"
Session.findById("wnd[0]").sendVKey 0
Session.findById("wnd[0]/usr/ctxtCAUFVD-AUFNR").Text = SWO
Session.findById("wnd[0]").sendVKey 0
Session.findById("wnd[0]/tbar[1]/btn[48]").press
On Error GoTo -1
On Error GoTo Pula_popup01
Pula_popup01:
**Session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
On Error GoTo -1
On Error GoTo Pula_popup02
'if no error appears
GoTo resume_fim_loop
Pula_popup02:
Session.findById("wnd[1]/usr/btnOPTION2").press
Session.findById("wnd[1]/tbar[0]/btn[0]").press
On Error GoTo -1
On Error GoTo Pula_popup03
Session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
'if no error appears
GoTo resume_fim_loop
Pula_popup03:
Session.findById("wnd[2]/tbar[0]/btn[0]").press
Session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
'the last hope of mankind
GoTo resume_fim_loop
Continue:
Session.findById("wnd[1]/usr/btnOPTION2").press
Session.findById("wnd[1]/tbar[0]/btn[0]").press
Status = "Ok"
End If
resume_fim_loop:
If Status = "Ok" Then
Cells(i, 3).Value = "SWO Fechada"
ElseIf Status = "" Then
Cells(i, 3).Value = "Erro ao Fechar"
End If
Next
MsgBox ("Macro finalizada!")
End Sub
解决方案
推荐阅读
- python - Fbprophet 安装错误 - 无法构建轮子
- javascript - 如何处理来自函数数组的重复函数调用?
- python - 我该如何解决:'int' 对象不可迭代
- github - 如何将整个项目板移动到不同的存储库中?
- javascript - UI5的输入字段中的多封电子邮件
- python - 是否可以从数据框转换为矩阵?
- c++ - 存储精确小数的最佳方法
- excel - “大于”运算符的 Countif 返回错误结果(Excel 2013)
- java - 如何使用 Bot Framework SDK for Java 将卡片添加到微软团队机器人?
- react-native - 包未链接 - 错误:包 com.beefe.picker 不存在 import com.beefe.picker.PickerViewPackage;