目前,我在" A1:D10" 范围内的每个单元格中都有值。我需要一次将每个单元格值复制到SAP Application中,并且我使用以下代码来执行此操作。但问题是它复制一个单元格(A1)4次而不是 A1,B1,C1,D1 。将 A1到D1 单元格更新到SAP应用程序后,数据将保存在SAP应用程序中,宏应从 B2到D2 开始并执行相同操作。这是我目前使用的代码。
以下是示例
当前代码宏正在复制(A1)100次4次然后移动到(B1)10次4次并移动到(C1)1234次4次并移动到(D1)BO 4次,然后它将转到行A2并做同样的事情。
但我想要的是它应该将 A1值100 复制到session.findById("wnd[8]/usr/ctxtANLA-BRSKT1").Text = cell.Value
并将 B1值10 复制到session.findById("wnd[8]/usr/ctxtANLA-MNSRTS2").Text = cell.Value
和 C1值1234 到session.findById("wnd[8]/usr/ctxtANLA-BUHFT3").Text = cell.Value
和 D1值BO 到session.findById("wnd[8]/usr/ctxtANLA-BUYTS4").Text = cell.Value
我希望这更有帮助
Dim rng As Range
Dim Row As Range
Dim Col As Range
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range("A2:D" & Lastrow)
For Each Row In rng.Rows
For Each cell In Row.Cells
If cell.Value <> "" Then
session.findById("wnd[8]/usr/ctxtANLA-BRSKT1").Text = cell.Value
session.findById("wnd[8]/usr/ctxtANLA-MNSRTS2").Text = cell.Value
session.findById("wnd[8]/usr/ctxtANLA-BUHFT3").Text = cell.Value
session.findById("wnd[8]/usr/ctxtANLA-BUYTS4").Text = cell.Value
End If
Next cell
Next Row
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
答案 0 :(得分:3)
这是你正在尝试的(未经测试)?
Sub Sample()
Dim i As Long, Lastrow As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ActiveSheet
Lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To Lastrow
If .Cells(i, 1).Value <> "" Then _
session.findById("wnd[8]/usr/ctxtANLA-BRSKT1").Text = .Cells(i, 1).Value
If .Cells(i, 2).Value <> "" Then _
session.findById("wnd[8]/usr/ctxtANLA-MNSRTS2").Text = .Cells(i, 2).Value
If .Cells(i, 3).Value <> "" Then _
session.findById("wnd[8]/usr/ctxtANLA-BUHFT3").Text = .Cells(i, 3).Value
If .Cells(i, 4).Value <> "" Then _
session.findById("wnd[8]/usr/ctxtANLA-BUYTS4").Text = .Cells(i, 4).Value
Next i
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
对于大范围,我仍然建议使用数组而不是像我在你问题下面的第二条评论中提到的那样循环遍历行。