Excel宏粘贴特殊值

时间:2017-12-01 03:23:05

标签: excel vba excel-vba paste

我是VBA的新手还在学习,如果我有点慢,请耐心等待。

我正在尝试更改下面的宏,以便粘贴特殊值。谷歌搜索了一段时间,但它没有工作。

我正在使用Excel 2016。

提前感谢您的帮助。

Private Sub Copy_Existing_Asset_Click()

    Dim i As Long
    Dim iLastRow As Long
    Dim iTarget As Long

    With Worksheets("Popcorn")

        iLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = 1 To iLastRow
            If .Cells(i, "A").Value = "Capex" Then
                iTarget = iTarget + 1
                .Cells(i, "B").Copy Worksheets("Sheet7").Range("A" & iTarget + 1)
                .Cells(i, "C").Copy Worksheets("Sheet7").Range("B" & iTarget + 1)
                .Cells(i, "D").Copy Worksheets("Sheet7").Range("C" & iTarget + 1)
                .Cells(i, "E").Copy Worksheets("Sheet7").Range("D" & iTarget + 1)
                .Cells(i, "F").Copy Worksheets("Sheet7").Range("F" & iTarget + 1)
                Worksheets("Sheet7").Range("G" & iTarget + 1).Value = "Hello"
                Worksheets("Sheet7").Range("H" & iTarget + 1).Value = "How"
                Worksheets("Sheet7").Range("I" & iTarget + 1).Value = "Are"
                Worksheets("Sheet7").Range("J" & iTarget + 1).Value = "You"
                .Cells(i, "N").Copy Worksheets("Sheet7").Range("K" & iTarget + 1)
                .Cells(i, "O").Copy Worksheets("Sheet7").Range("L" & iTarget + 1)
                .Cells(i, "P").Copy Worksheets("Sheet7").Range("M" & iTarget + 1)
                .Cells(i, "Q").Copy Worksheets("Sheet7").Range("N" & iTarget + 1)
                .Cells(i, "R").Copy Worksheets("Sheet7").Range("O" & iTarget + 1)
            End If
        Next i

    End With


    With Worksheets("Chips")

        iLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = 1 To iLastRow
            If .Cells(i, "A").Value = "Capex" Then
                iTarget = iTarget + 1
                .Cells(i, "B").Copy Worksheets("Sheet7").Range("A" & iTarget + 1)
                .Cells(i, "C").Copy Worksheets("Sheet7").Range("B" & iTarget + 1)
                .Cells(i, "D").Copy Worksheets("Sheet7").Range("C" & iTarget + 1)
                .Cells(i, "F").Copy Worksheets("Sheet7").Range("D" & iTarget + 1)
                .Cells(i, "G").Copy Worksheets("Sheet7").Range("F" & iTarget + 1)
                Worksheets("Sheet7").Range("G" & iTarget + 1).Value = "Hello"
                Worksheets("Sheet7").Range("H" & iTarget + 1).Value = "How"
                Worksheets("Sheet7").Range("I" & iTarget + 1).Value = "Are"
                Worksheets("Sheet7").Range("J" & iTarget + 1).Value = "You"
                .Cells(i, "R").Copy Worksheets("Sheet7").Range("K" & iTarget + 1)
                .Cells(i, "S").Copy Worksheets("Sheet7").Range("L" & iTarget + 1)
                .Cells(i, "T").Copy Worksheets("Sheet7").Range("M" & iTarget + 1)
                .Cells(i, "U").Copy Worksheets("Sheet7").Range("N" & iTarget + 1)
                .Cells(i, "V").Copy Worksheets("Sheet7").Range("O" & iTarget + 1)
            End If
        Next i

    End With


    MsgBox ("Thank You")

End Sub

1 个答案:

答案 0 :(得分:0)

金,

我想我理解你的要求。您想知道如何使用粘贴值或粘贴公式等特殊粘贴功能。

这与你已经这样做非常相似。但我想首先指出一件事,当你不需要如此Range("A1").Copy Range("A2")时,你目前正在做的事情(.PasteSpecial)是最好的。它更好,因为它不需要使用Windows剪贴板,你会发现更快(特别是当你复制/粘贴很多单元格时)

但要进行相同的粘贴但使用粘贴值只能使用此

Range("A1").Copy
Range("A2").PasteSpecial xlPasteValues

当您输入.PasteSpecial时,您会看到所有其他.PasteSpecial选项。或者,您也可以看到此网站:https://msdn.microsoft.com/en-us/vba/excel-vba/articles/xlpastetype-enumeration-excel

但重申一下,尽可能使用第一种方法防止宏使用Windows剪贴板陷入困境。