Excel 宏粘贴特殊值

Excel Macro Paste Special Value

我是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

金,

我想我明白你在问什么。您想知道如何使用特殊的粘贴功能,例如粘贴值或粘贴公式。

这与您已经在做的非常相似。但我想首先指出一件事,当您不需要 .PasteSpecial 时,您目前的做法 (Range("A1").Copy Range("A2")) 是最好的。它更好,因为它不需要使用 windows 剪贴板,而且你会发现速度要快得多(尤其是当你 copy/pasting 有很多单元格时)

但要执行相同的粘贴但使用粘贴值仅使用此

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

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

但重申一下,尽可能使用第一种方法,以防止您的宏因使用 windows 剪贴板而陷入困境。