代码要做的就是复制三个值并将其粘贴到新表中
问题是是否有更短的方法来使代码更紧凑?
可以选择循环。但是,要复制和粘贴的最后一行没有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
答案 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