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

时间:2014-08-09 06:57:44

标签: excel vba excel-vba excel-2010 export-to-excel

目前,我在" 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

1 个答案:

答案 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

对于大范围,我仍然建议使用数组而不是像我在你问题下面的第二条评论中提到的那样循环遍历行。