使用vba粘贴值

时间:2014-10-27 15:48:54

标签: excel vba excel-vba copy-paste

我有一个代码,用于选择工作簿A中特定工作表中的所有数据(代码中的名称为' fn')并将其复制到工作簿B中的特定工作表中。我想做什么是只有PASTE VALUES,即粘贴从复制表复制的值,同时保持/转换(转换)过去工作表中表格的格式,这是我的代码 -

Set copySheet = copyBook.Sheets(fn) 'Points to the sheet in the raw data file
Set pasteBook = ThisWorkbook 'Sets the file where we are supposed to paste to as the template file
Application.DisplayAlerts = False
Set pasteSheet = pasteBook.Sheets("Transaction") 'Points to the Transaction sheet on the template
lastRow = copySheet.Cells(Rows.Count, 1).End(xlUp).row 'Computes the last row on the raw data file


'Copies raw data to tab/sheet in template
copySheet.Activate
Application.ScreenUpdating = False
For column = 1 To 27
    For row = 2 To lastRow
    cp = copySheet.Cells(row, column)
    pasteSheet.Cells(row + 211, column).Value = cp
    Next
Next
Application.ScreenUpdating = True


copyBook.Close 'Closes the raw data file
End If

注意 - 我真的更喜欢我只是对上面的代码进行一些小改动,而不是完全改造另一个代码。谢谢!

3 个答案:

答案 0 :(得分:0)

 cp = copySheet.Cells(row, column)
pasteSheet.Cells(row + 211, column).Value = cp

更改为

copySheet.Cells(row, column).Select  
Selection.Copy 
pasteSheet.Cells(row + 211, column).Select 
Selection.PasteSpecial Paste:=xlPasteValues 

Application.CutCopyMode = False 

Application.CutCopyMode此处设置为false只会使您的程序退出复制模式。

答案 1 :(得分:0)

试试这个。您也可以跳过激活工作表,因为您只是复制数据。

Application.ScreenUpdating = False
For column = 1 To 27
    For row = 2 To lastRow

    pasteSheet.Cells(row + 211, column) = copySheet.Cells(row, column).Value

    Next
Next

答案 2 :(得分:0)

用这个更新你的循环:

For column = 1 To 27
    For row = 2 To lastRow
        copySheet.Cells(row, column).copy Destination:=pasteSheet.Cells(row + 211, column)
    Next
Next