【发布时间】:2017-11-24 23:36:12
【问题描述】:
我正在尝试使用 VBA 将一些单元格值复制并粘贴到同一工作簿中的其他工作表中。
在订单列表工作表格式如下:
(Column A) | (Column B) | (Column C) | (Column D) | (Column E) | (Column F)
Product Code | Product Description | Price | Quantity | Net Amount | Sheet Name
我需要复制订单列表表中的数量并粘贴到相关表中,如F列所示。
例如,产品代码AAA有数量10个工作表名称订单列表中的艺术。 p>
Product Code | Product Description | Price | Quantity | Net Amount | Sheet Name
AAA ... ... 5 ... Art
我需要一个代码来将 Art 表中 AAA 的 Quantity(G 列)替换为 10 而不是 5。Product Code 在艺术表的 B 列。
(Column B) | ... | (Column G)
Product Code | Other headers | Quantity
AAA ... 10 ' <---- REPLACE WITH 5
我已更新如下:
Dim j As Long, i As Long
j = 18
With Worksheets("Order List")
If Sheets("Order List").Range("F" & j) <> "" And Sheets("Order List").Range("A" & j) <> "" Then
i = Worksheets(.Range("F" & j)).Columns("B").Find(What:=.Range("A" & j).Value, LookIn:=xlValues, LookAt:=xlWhole).Row
Sheets("Order List").Range("D" & j).Copy Destination:=Worksheets(Worksheets("Order List").Range("F" & j)).Range("G" & i)
j = j + 1
End If
现在没有错误信息,但Art Sheet中的数量也没有替换。 目的地错了吗?你能帮我仔细检查一下吗?非常感谢
【问题讨论】:
-
您不需要为
j查找值,除非相关工作表和产品代码都可用,因此在检查它们是否可用之前不要尝试使用这些值。 -
@YowE3K 我已经更新了这些列。 A列中的产品代码,D列中的数量和工作表名称在订单列表中的F列中。第一行是订单列表中的 18。产品代码在其他工作表的 B 列中。我知道您编写的代码是查找行号,我使用此行号在其他工作表中查找相关的 G 列(本例中的艺术表)。相关的工作表和产品代码都可用,所以我认为代码应该可以工作。我已对其进行了更新,但仍然看到运行时错误“9”。如果我的代码有误,您能否更正我的代码?非常感谢
-
您更新后的代码仍在尝试使用
Worksheets(.Range("F" & j)),然后再测试是否Sheets("Order List").Range("F" & j) <> ""。因此,如果它为空白,则您正在寻找没有名称的工作表。在检查它们是否可用之前不要尝试使用这些值 - 将i的计算移到 insideIf语句中,您将知道它会起作用。 -
@YowE3K 作为您的建议,我再次更新了它。希望我没有误会你。它现在显示类型不匹配。请您再帮我检查一下好吗?非常感谢
-
看起来这是默认情况下不使用
Value属性的情况之一——.Range("F" & j)在用作@987654333 的索引时需要更改为.Range("F" & j).Value@ 收藏。我会相应地更新我的答案。