繁体   English   中英

使用 VBA 将一系列单元格从一个工作表复制到另一个工作表

[英]Copy a range of cells from one worksheet to another using VBA

我是使用 VBA 的新手,需要将数据从一个工作表上的一系列单元格复制到另一个工作表。 我需要复制一列单元格并将其粘贴到一行单元格中,例如 A1:A4 到 A1:D1。 这是我正在使用的代码,但它也不能按我需要的方式工作。

Sub Draft()

Worksheets("Material Check").Range("B3:B6").Copy _
Destination:=Worksheets("Archive").Range("A2:D2")

End Sub

此外,我需要将正在复制的数据添加到存档表的表格底部,但我不确定如何执行此操作。

没有 Excel 表格

这是一个有点奇怪的方法,但如果你有很多单元格要做,它可能比复制/粘贴特殊:

ThisWorkbook.Worksheets("Archive").Range("A2:D2").Formula = "=INDEX('Material Check'!$B$3:$B$6,Column())"
ThisWorkbook.Worksheets("Archive").Range("A2:D2").Value = ThisWorkbook.Worksheets("Archive").Range("A2:D2").Value

第一行使用从源提取数据的公式填充目标范围,使用 INDEX/COLUMN 转置结果。

第二行只是将公式转换为硬值。

编辑 - 将值复制到列表底部的解决方案
使用 Excel 表格

为此,您需要转到“插入”-->“表格”。

''Get a reference to your destination table
Dim Tbl1 As ListObject
Set Tbl1 = ThisWorkbook.Sheets("Archive").ListObjects("Table1") ''Change these to your destination sheet/table names

''add a new row to the table
Dim Newrow As ListRow
Set Newrow = Tbl1.ListRows.Add

''populate the new row
With Newrow
    .Range(Tbl1.ListColumns("Column1").Index) = ThisWorkbook.Worksheets("Material Check").Range("B3") ''change these to your destination column name and your source sheet/ranges
    .Range(Tbl1.ListColumns("Column2").Index) = ThisWorkbook.Worksheets("Material Check").Range("B4")
    .Range(Tbl1.ListColumns("Column3").Index) = ThisWorkbook.Worksheets("Material Check").Range("B5")
    .Range(Tbl1.ListColumns("Column4").Index) = ThisWorkbook.Worksheets("Material Check").Range("B6")
End With

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM