将值复制并粘贴到预定单元格中

时间:2018-09-25 20:37:21

标签: excel-vba copy cell paste

代码要做的就是复制三个值并将其粘贴到新表中

问题是是否有更短的方法来使代码更紧凑?

可以选择循环。但是,要复制和粘贴的最后一行没有2的差异。这就是为什么我认为带有“步骤2”的循环不会产生所需结果的原因。

   Dim wb As Workbook, wq As Object
   Dim ws As Worksheet, datDatum
   Dim cell As Range

   Set wb = Workbooks.Add
   Set ws = wb.Worksheets("Table")
    ws.Select

   Workbooks("Eigene Fundingspreads.xlsm").Sheets("Plain 
   Vanilla").Range("C29").Copy
   ws.Range("J106").PasteSpecial Paste:=xlPasteValues  

   Workbooks("Eigene Fundingspreads.xlsm").Sheets("Plain 
   Vanilla").Range("C31").Copy
   ws.Range("L106").PasteSpecial Paste:=xlPasteValues

  Workbooks("Eigene Fundingspreads.xlsm").Sheets("Plain 
  Vanilla").Range("C33").Copy
  ws.Range("N106").PasteSpecial Paste:=xlPasteValues

  Workbooks("Eigene Fundingspreads.xlsm").Sheets("Plain 
  Vanilla").Range("C36").Copy
  ws.Range("Q106").PasteSpecial Paste:=xlPasteValues

第二轮复制

  Workbooks("Eigene Fundingspreads.xlsm").Sheets("Plain 
  Vanilla").Range("L29").Copy
  ws.Range("J113").PasteSpecial Paste:=xlPasteValues

 Workbooks("Eigene Fundingspreads.xlsm").Sheets("Plain 
 Vanilla").Range("L31").Copy
 ws.Range("L113").PasteSpecial Paste:=xlPasteValues

 Workbooks("Eigene Fundingspreads.xlsm").Sheets("Plain 
 Vanilla").Range("L33").Copy
 ws.Range("N113").PasteSpecial Paste:=xlPasteValues

 Workbooks("Eigene Fundingspreads.xlsm").Sheets("Plain 
 Vanilla").Range("L36").Copy
 ws.Range("Q113").PasteSpecial Paste:=xlPasteValues

2 个答案:

答案 0 :(得分:1)

最好的方法是避免复制。将源单元格的值分配给目标单元格的速度要快得多。特别是,如果您需要的只是单元格的价值。您可以这样操作:

Dim wbEigene As Workbook
Set wbEigene = Workbooks("Eigene Fundingspreads.xlsm")
Dim wsPlainVanilla as Worksheet
Set wsPlainVanilla = wbEigene.Worksheets("Plain Vanilla")

'this way is more efficient than copying:
ws.Range("J106").Value = wsEigene.Range("C29").Value

调整所有工作表和工作簿的大小,并使用这些变量使代码更易读和易于维护。

答案 1 :(得分:1)

最终答案是这样的:

ws.Range("J106").Value = wsEigene.Range("C29").Value

ws.Range("L106").Value = wsEigene.Range("C31").Value

ws.Range("J106").Value = wsEigene.Range("C29").Value

ws.Range("N106").Value = wsEigene.Range("C33").Value