使用 VBA 将所选列复制并粘贴到 Excel 中 Table 的末尾

Copy and Paste Selected Columns to End of Table in Excel with VBA

在同一个工作表中,我有一个 table,每次添加新数据时,我都需要将此 table 的最后 4 列复制到同一个 [=] 的右端24=] 这样我就可以添加新数据了。主要原因是我总是想保持相同的格式,有些列有下拉列表和公式。

我在下面的网站上找到了下一个代码。它非常适合 copy/pasting 行,所以我尝试修改代码以对列执行此操作,但我无法管理。

我是 VBA 的新手,刚开始学习如何编写宏程序,所以如果您能提供任何关于我能做什么的反馈,我们将不胜感激。

https://www.contextures.com/exceltablemacrocopyitems.html

Sub CopySelectionVisibleRowsEnd()
Dim ws As Worksheet
Dim mySel As Range
Dim lRow As Long
Dim lRowNew As Long
Dim lRowsAdd As Long
Dim myList As ListObject
Dim myListRows As Long
Dim myListCols As Long

Set ws = ActiveSheet
Set mySel = Selection.EntireRow
Set myList = ActiveCell.ListObject
myListRows = myList.Range.Rows.Count
myListCols = myList.Range.Columns.Count
lRow = ws.Cells.Find(What:="*", _
        SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, _
        LookIn:=xlValues).Row + 1

mySel.SpecialCells(xlCellTypeVisible).Copy
ws.Cells(lRow, 1).PasteSpecial Paste:=xlPasteAll

lRowNew = ws.Cells.Find(What:="*", _
        SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, _
        LookIn:=xlValues).Row + 1
lRowsAdd = lRowNew - lRow

With myList
    .Resize ws.Range(.Range.Resize(myListRows + lRowsAdd, myListCols).Address)
End With

Application.CutCopyMode = False
End Sub

如果您总是只想复制最后 4 列,试试这个。根据需要调整 table 名称。

Sub CopySelectionVisibleRowsEnd()

Dim myList As ListObject
Dim rng As Range
Dim myListCols As Long

Set myList = ActiveSheet.ListObjects("Table1")
myListCols = myList.Range.Columns.Count
Set rng = Range("Table1[#All]").Resize(, myListCols + 4)
myList.Resize rng

myList.ListColumns(myListCols - 3).Range.Resize(, 4).Copy myList.ListColumns(myListCols + 1).Range

End Sub