Excel VBA从选定行复制特定单元格,并将指定列粘贴到其他工作簿

Excel VBA从选定行复制特定单元格,并将指定列粘贴到其他工作簿,excel,vba,copy,paste,Excel,Vba,Copy,Paste,我有一个浮动按钮,当我选择了一些行并按下该按钮时,我希望从所选行复制一些指定的单元格,然后粘贴到另一个工作簿中,当按下该按钮时,该工作簿将打开 例如,A列第2-3行中的值被选中,当我按下按钮时,我希望A列中的值从第2行开始复制到B列。将E列中的值复制到F列等 我找到了以下代码,但我无法找到如何修改代码以指定要复制到何处的单元格 有人能给我一些提示吗 Sub CopyCells() Dim Rng As Range For Each Rng In Selection.Areas

我有一个浮动按钮,当我选择了一些行并按下该按钮时,我希望从所选行复制一些指定的单元格,然后粘贴到另一个工作簿中,当按下该按钮时,该工作簿将打开

例如,A列第2-3行中的值被选中,当我按下按钮时,我希望A列中的值从第2行开始复制到B列。将E列中的值复制到F列等

我找到了以下代码,但我无法找到如何修改代码以指定要复制到何处的单元格

有人能给我一些提示吗

Sub CopyCells()
    Dim Rng As Range
    For Each Rng In Selection.Areas
    Union(Rng.Resize(, 6), Rng.Resize(, 1).Offset(, 1)).Copy Sheets("Blad2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 5)
    Next Rng
    Worksheets("Blad2").Activate
End Sub
新代码:

Public Sub CopyCells()
    Dim wsSrc As Worksheet 'define source sheet
    Set wsSrc = ThisWorkbook.Worksheets("Sheet1")

    Dim wsDest As Worksheet 'define destination sheet
    Dim wbDest As Workbook 'define destination workbook
    Set wbDest = Workbooks.Open("C:\Temp\Test.xlsx")
    Set wsDest = wbDest.Worksheets("Sheet1")

    Dim DestRow As Long
    DestRow = 2 'start in row 2 in destination sheet

    Dim Rng As Range
    For Each Rng In Selection.Areas
         Rng.Resize(, 1).Copy Destination:=wsDest.Cells(DestRow, "B") 'copy A to B
         Rng.Resize(, 1).Offset(, 4).Copy Destination:=wsDest.Cells(DestRow, "F") 'copy E to F
         DestRow = DestRow + Rng.Rows.Count 'move DestRow to next free row
    Next Rng
End Sub

如果列不是连续的,则需要对每个列执行复制操作

Option Explicit

Public Sub CopyAtoBandEtoF()
    Dim wsSrc As Worksheet 'define source sheet
    Set wsSrc = ThisWorkbook.Worksheets("Source")

    Dim wsDest As Worksheet 'define destination sheet
    Set wsDest = ThisWorkbook.Worksheets("Destination")

    Dim DestRow As Long
    DestRow = 2 'start in row 2 in destination sheet

    Dim Rng As Range
    For Each Rng In Selection.Areas
        Rng.Resize(, 1).Copy Destination:=wsDest.Cells(DestRow, "B") 'copy A to B
        Rng.Resize(, 1).Offset(, 4).Copy Destination:=wsDest.Cells(DestRow, "F") 'copy E to F
        DestRow = DestRow + Rng.Rows.Count 'move DestRow to next free row
    Next Rng
End Sub

太好了,谢谢!试图将目标更改为另一个工作簿,但在时间间隔外出现错误9。在我的原始帖子中添加了代码。Workbooks C:\Temp\Test.xlsx假定此工作簿已打开。如果它是关闭的,您必须使用:Set wbDest=Workbooks.OpenFileName:=C:\Temp\Test.xlsx现在它打开了目标文件,但没有任何东西被粘贴。它应该可以工作,代码已经过测试。它假定您在源工作表中选择了整行,并且在运行代码时源工作表处于活动状态。你可以用F8一步一步地调试代码,看看会发生什么。它也应该可以工作。a您确定选择了整行吗?调试。打印选择。地址在循环之前运行的结果是什么。b如果你一步一步地检查代码会发生什么?尝试在循环之前添加wsSrc.Parent.Activate:wsSrc.Activate。