在工作表之间复制和粘贴宏

时间:2018-01-04 12:31:16

标签: excel vba excel-vba for-loop

我正在尝试构建一个宏。宏的目标在A列中找到一个名称,然后从D,H,I,K和L列复制信息。

目前我只能复制整行而不是特定列。此信息粘贴在工作表中(" Recon")。

下面是我的工作表(" Recon")的屏幕截图,其中包含此工作表中的标题。我已经在其他工作表中输入了我想要粘贴的列名。

Sub CopyRows()
 Dim bottomL As Integer
 bottomL = Sheets("Cash Transactions RBS December ").Range("A" & Rows.Count).End(xlUp).Row
 Dim c As Range
 For Each c In Sheets("Cash Transactions RBS December ").Range("A1:A" & bottomL)
 If c.Value = "M1 GP LtdEUR" Then ' this should be based on name in cell value H
 c.EntireRow.Copy Worksheets("Recon").Range("A" & Rows.Count).End(xlUp).Offset(1)
 End If
 Next c
 End Sub

enter image description here

1 个答案:

答案 0 :(得分:0)

首先,将bottomL声明为Long,如果你有超过32767行,整数将导致溢出错误。你现在可能不需要它,但这只是一个好习惯。如果仅需要值,请不要复制,而是直接赋值。我会这样做:

With Worksheets("Recon").Range("A" & Rows.Count).End(xlUp)
    .Offset(1, 0).Value = c.EntireRow.Range("D1")
    .Offset(1, 1).Value = c.EntireRow.Range("H1")
    .Offset(1, 2).Value = c.EntireRow.Range("I1")
    'The same for K and L
End With

但是还有很多其他的可能性,你可以使用相交的偏移量作为例子。