通过VBA将值复制并粘贴到另一个工作表
我正在尝试在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,具有订单清单中的工作 表名称 。
Product Code | Product Description | Price | Quantity | Net Amount | Sheet Name AAA ... ... 5 ... Art
我需要一个代码来将艺术品表中的AAA 数量 (G列)replace为10而不是5. 产品代码在艺术品表格的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
现在没有错误信息,但不能replace艺术品表中的数量。 目的地是否错误? 你能不能为我检查一下? 非常感谢
尝试使用“ Find
命令,例如:
Dim j As Long, i As Long j = 18 With Worksheets("Order List") If .Range("F" & j).Value <> "" And .Range("A" & j).Value <> "" Then i = Worksheets(.Range("F" & j).Value).Columns("B").Find(What:=.Range("A" & j).Value, LookIn:=xlValues, LookAt:=xlWhole).Row .Range("D" & j).Copy Destination:=Worksheets(.Range("F" & j).Value).Range("G" & i) 'or, if you just want to copy the value, use 'Worksheets(.Range("F" & j).Value).Range("G" & i).Value = .Range("D" & j).Value j = j + 1 End If End With
笔记:
- 假定产品代码位于试图更新的工作表的A列中。
- 如果产品代码不存在于相关工作表的A列中,将会崩溃。 如果这是一种可能性,那么你将需要包括正确的错误检查,以查看是否成功(即没有返回
Nothing
),然后再试图获得Row
属性。
也许有一个更容易的替代解决scheme。 您可以使用订单列表工作表上的用户友好的工作表查找function(而不是使用VBA处理繁琐的多工单订单数量search(以及将新数据“放入订单”)) “将数据合并到所有其他表单中,然后在适当的时候进行简单的单列复制和粘贴。
和
[
您可以从JumpShare下载我的[简单]演示XLSM ,以展示我的意思是“放弃而不是获得”。 基本上,1查找公式会search所有的内容,只需要2行代码就可以在需要时复制新数据。 {请注意,该macros将不能在联机查看器上工作。)
VBA不是我的专长,所以我把你的代码解构成了一些,所以我可以更好地理解它。
Dim j As Long, i As Long Dim s As String Dim ws As Worksheet j = 18 Set ws = Worksheets("Order List") s = ws.Range("A" & j).Value i = Worksheets(ws.Range("F" & j)).Columns("B").Find(What:=s, LookIn:=xlValues, _ LookAt:=xlWhole).Row If ws.Range("F" & j) <> "" And ws.Range("A" & j) <> "" Then ws.Range("D" & j).Copy Destination:=Worksheets("F" & j).Range("G" & i) j = j + 1 End If
跳出来的一件事是最后一行代码:
Destination:=Worksheets("F" & j).Range("G" & i)
这告诉我在工作簿中有一个名为“Fx”(其中x是一个数字)的工作表 。 这是可能的吗?
Destination:=Worksheets(ws.Range("F" & j))