我是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
答案 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剪贴板陷入困境。