根据值复制一系列单元格并将其插入另一个工作表

时间:2016-04-18 18:27:03

标签: excel-vba macros vba excel

我是使用VBA的新手,并不完全了解如何使用范围和偏移函数。

这是我想要完成的事情。我有一个工作表“Sheet1”,其产品和定价信息在第4行从“A”到“H”列开始。列“D”是输入的数量。我正在尝试编写一个宏,以便任何行在“D”列中都有一个数字,然后插入该行的单元格“A”到“D”到“Sheet4”开始于“B49”。在“B49”之前和之后都有包含信息的行,我不想覆盖。

以下是我必须复制单元格的代码:

Sub Copy_And_Paste()
'
' Copy_And_Paste Macro
'
    Application.ScreenUpdating = False

    LastRow = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row

    For i = 4 To LastRow

    If Cells(i, 4) > 0 Then
    Range(Cells(i, 1), Cells(i, 4)).Select
    Selection.Copy

    Sheets("Sheet4").Select
    Range("B49").Select

    ActiveSheet.Paste

    End If

    Next i
    Application.ScreenUpdating = True
End Sub

现在它只会粘贴第一行,并在“D”列中粘贴一个数字。

2 个答案:

答案 0 :(得分:0)

这是未经测试的:

Sub Copy_And_Paste()
    Application.ScreenUpdating = False
    With Worksheets("Sheet1")
        LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
        For i = 4 To LastRow
            If .Cells(i, 4) > 0 Then
                Sheets("Sheet4").Rows(49).Insert
                .Range(.Cells(i, 1), .Cells(i, 4)).Copy Sheets("Sheet4").Range("B49")
            End If
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

答案 1 :(得分:0)

通过取出LastRow语句并将For i语句更改为

,我能够按照我想要的方式工作
For i =10000 To 4 Step -1