Excel VBA从选定行复制特定单元格,并将指定列粘贴到其他工作簿
我有一个浮动按钮,当我选择了一些行并按下该按钮时,我希望从所选行复制一些指定的单元格,然后粘贴到另一个工作簿中,当按下该按钮时,该工作簿将打开 例如,A列第2-3行中的值被选中,当我按下按钮时,我希望A列中的值从第2行开始复制到B列。将E列中的值复制到F列等 我找到了以下代码,但我无法找到如何修改代码以指定要复制到何处的单元格 有人能给我一些提示吗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
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。