2014-09-04 74 views
0

PasteValues是VBA中最令人沮丧的事情!可以大大使用一些帮助。 简而言之,我试图复制一行并将特殊值粘贴到另一张纸上的另一行中。我认为这是一个问题,所以我然后修改我的范围,并尝试粘贴,也无济于事。我甚至尝试录制一个宏,生成的代码几乎和我的一样。复制一行并粘贴特殊值行到另一个表(或者只是行的一部分)

有人可以帮忙吗?我一直在寻找这个太长时间:/

Sub CopyXs() 

Dim counter As Double 
Dim CopyRange As String 
Dim NewRange As String 

counter = 2 

For Each Cell In ThisWorkbook.Sheets("LD_Tracker_CEPFA").Range("A7:A500") 
If Cell.Value = "X" Then 
Sheets("Upload_Sheet").Select 
matchrow = Cell.Row 
counter = counter + 1 



Let CopyRange = "A" & matchrow & ":" & "Y" & matchrow 
Let NewRange = "A" & counter & ":" & "Y" & counter 

Range(CopyRange).Select 
Selection.Copy 

Sheets("Final_Upload").Select 
ActiveSheet.Range(NewRange).Select 

Selection.PasteSpecial Paste = xlPasteValues 

Sheets("Upload_Sheet").Select 
End If 

Next 


End Sub 
+1

尝试':= xlPasteValues'代替'= xlPasteValues' – 2014-09-04 20:54:50

+0

呃,非常感谢,完美! – 2014-09-04 21:04:45

+0

@JasonKowalski欢迎来到SO。一般来说,最好的做法是将问题作为答案回答,而不是编辑问题以包含答案。我已重新编辑您的问题以删除答案。无论是你还是Matt Cremeens都应该在答案部分添加解决方案。 – guitarthrower 2014-09-04 22:11:22

回答

0

我也很苦恼与Paste.Special。此代码适用于我。您记录宏的Paste.Special时得到的代码不起作用。你首先要确定一个范围,然后用于Paste.Special

代码

范围(东西).PasteSpecial粘贴:= xlPasteValues Application.CutCopyMode =假

'This code works for me:  
'**Select everything on the active sheet** 

Range("A1").Select 
Dim rangeTemp As Range 
Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious) 
If Not rngTemp Is Nothing Then Range(Cells(4, 1), rngTemp).Select 
End if 

' **Copy the selected range** 
Selection.Copy 

'**Select the destination and go to the last cel in column A and then go 2 cells down 
'and paste the values** 

Sheets("your sheet name").Select 
Range("A" & Cells.Rows.Count).End(xlUp).Offset(2, 0).PasteSpecial Paste:=xlPasteValues 
Application.CutCopyMode = False 

    **'Select the last cell in column A** 

Range("A" & Cells.Rows.Count).End(xlUp).Select 
相关问题