循环遍历一个范围内的每个单元格并更新SAP数据库

目前我在“A1:D10”范围内的每个单元格中都有值。 我需要一次将每个单元格值复制到SAP应用程序中,并使用下面的代码来执行此操作。 但问题是它复制一个单元格(A1)4次,而不是A1,B1,C1,D1 。 一旦A1到D1单元格被更新到SAP应用程序中,那么数据将被保存在SAP应用程序中,macros应该从B2开始到D2并且执行相同的操作。 这是我目前正在使用的代码。

这里是例子

用当前代码macros复制(A1)100 4次,然后移动到(B1)10 4次,移动到(C1)1234 4次,移动到(D1)BO 4次,然后移到A2行,一样。

但是我想要的是它应该将A1值100复制到session.findById("wnd[8]/usr/ctxtANLA-BRSKT1").Text = cell.ValueB1值10session.findById("wnd[8]/usr/ctxtANLA-MNSRTS2").Text = cell.ValueC1值1234session.findById("wnd[8]/usr/ctxtANLA-BUHFT3").Text = cell.ValueD1值BOsession.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 

这是你正在尝试( 未经testing )?

 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 

对于一个很大的范围,我仍然会推荐使用一个数组而不是循环遍历行,正如我在下面的第二个注释中提到的那样。