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

时间:2020-03-05 12:42:34

标签: excel vba

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

java.lang.AssertionError: Instance must be configured before use

我还需要将要复制的数据添加到档案表中表格的底部,我不确定该怎么做。

1 个答案:

答案 0 :(得分:0)

没有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