[英]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.