Скопируйте и вставьте значения в заранее определенные ячейки - PullRequest
0 голосов
/ 25 сентября 2018

Все, что делает код, это копирует три значения и вставляет их в новый лист

Вопрос в том, существует ли более короткий путь, чтобы код был более компактным?

Цикл был бы вариантом.Однако последние строки, которые будут скопированы и вставлены, не имеют разницы 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 голосов
/ 01 октября 2018

Окончательный ответ будет следующим:

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
0 голосов
/ 25 сентября 2018

Лучший способ - избегать копирования.Намного быстрее присваивается значение исходной ячейки целевой ячейке.Особенно, если вам нужно только значение ячейки.Вы можете сделать это следующим образом:

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

Затемните все свои листы и рабочие книги и используйте эти переменные, чтобы сделать ваш код более читабельным и простым в обслуживании.

...