Excel宏VBA - 插入单元格而不是复制

时间:2017-04-18 08:45:11

标签: excel vba excel-vba

我尝试搜索与我的问题相关的多个问题并尝试更改我自己的代码以适应解决方案,但是我不太擅长编程,因此没有一个解决方案帮助过我。

因此,这是我的问题:我创建了一个代码,如果它包含特定值,则通过按钮将整行复制到另一个工作表。

但是因为底部有一个总和的值,代码会自动将它们复制到总和之下,使其无效。如果我更改范围以在总和之前复制单元格,则会出现下一个问题,即复制行而不插入行。因此,在某些时候,总和将被复制的单元格覆盖。

我不想要将总和放在最上面,我希望将单元格简单地插入总和之上,而不是复制:

Sub Test()
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim J As Long
I = Worksheets("Sheet1").UsedRange.Rows.Count
J = Worksheets("Sheet2").UsedRange.Rows.Count
If J = 1 Then
   If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
End If
Set xRg = Worksheets("Sheet1").Range("G1:G" & "999")
On Error Resume Next
Application.ScreenUpdating = False
For Each xCell In xRg
    If CStr(xCell.Value) = "Test" Then
        xCell.EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
        xCell.EntireRow.Delete
        J = J + 1
    End If
Next
Application.ScreenUpdating = True
End Sub

我想我已经设法将其缩小到以下几行,这就是问题所在:

xCell.EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)

不知何故,我需要更改它,以便在总和与上一个/最后一个插入行之间插入一行。因此代码" J + 1"需要更改为总和和我最后插入的行之间的距离" J - 5"。但是,这仍然无法解决我的"复制/插入"问题

2 个答案:

答案 0 :(得分:0)

尝试这样......

xCell.EntireRow.Copy
Worksheets("Sheet2").Range("A" & J + 1).Insert shift:=xlDown

答案 1 :(得分:0)

您可以在复制值之前插入一行:

'Inserting a Row at at Row 2
Range("A2").EntireRow.Insert