【发布时间】:2014-08-09 06:57:43
【问题描述】:
目前,我在 “A1:D10” 范围的每个单元格中都有值。我需要一次将每个单元格值复制到 SAP 应用程序中,我正在使用下面的代码来执行此操作。但问题是它复制了一个单元格 (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
【问题讨论】:
-
不应该那样做。您确定存储此代码的过程没有被调用 4 次吗?
-
另外,如果您将范围存储在数组中,然后将数据传输到数据库,则速度会更快,而不是遍历范围中的每个单元格。在这种情况下并不重要,因为
A1:D10是一个非常小的范围...... -
这只是一个例子,有时我们会有超过 1000 行。我注意到,一旦它进入 For 循环,它就会为所有四个字段复制相同的值,因为它在循环内,但我不知道如何更改代码以工作
-
以前我们在 SAP 中只有一个单元格,但现在他们又包含了 3 个单元格。所以我在 vba 代码中又添加了三行。我知道我在代码中犯了一个错误,因为我在复制所有四个单元格值后使用了 Next Cell ,但不知道每次如何更改单元格值
-
我认为相同的单元格值在我的代码中被复制了四次(请参见下文)
标签: vba excel excel-2010 export-to-excel