我是VBA新手,我的自然语言是葡萄牙语,这使得它更难得到答案。我有5个VB项目,使用相同的语法完美地工作,因为我用在这一个,但这一次它根本不工作。
我只需要把数据从我的工作表输入到F-63交易的一些字段中。
另一个问题是,即使单元格上有“OK”,代码也不会停止
Sub f63()
Dim cell, rng As Range
Set rng = Sheet1.Range("A2:A" & Sheet1.Range("A2").End(xlDown).Row)
If Not IsObject(Applicatio) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set Applicatio = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = Applicatio.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject Applicatio, "on"
End If
session.findById("wnd[0]").maximize
For Each cell In rng
If Cells(cell.Row, "E").Value <> "OK" Then
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nf-63"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtBKPF-BLDAT").Text = Cells(cell.Row, "B").Value
session.findById("wnd[0]/usr/txtBKPF-XBLNR").Text = Cells(cell.Row, "A").Value
session.findById("wnd[0]/usr/txtBKPF-BKTXT").Text = Cells(cell.Row, "A").Value
session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").Text = Cells(cell.Row, "C").Value
session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").SetFocus
session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
Cells(cell.Row, "E").Value = "OK"
End If
Next cell
MsgBox "Concluído", vbInformation, "F-63"
1条答案
按热度按时间xmq68pz91#
注:当你引用一个单元格范围时,该范围的第一个单元格总是行号1。所以如果你在代码中更改了范围,它将在同一个工作表的不同区域工作。你的单元格是它读取的地方,而单元格是活动的工作表。最好在这里删除范围内容。并且只对
Cells(row, colums)
这样的活动工作表进行仲裁。并且使用列号代替。如下所示: