【问题标题】:Copy and pasting a looped result down a column in another sheet将循环结果复制并粘贴到另一个工作表的列中
【发布时间】:2020-09-30 11:02:38
【问题描述】:

这是我当前的代码,我想更改最后一行。

Dim Answer As VbMsgBoxResult
Answer = MsgBox("Did you refresh the model?", vbYesNo + vbQuestion + vbDefaultButton2)
If Answer = vbYes Then

Sheets("SITE Model").Range("C8").Value = 0
Sheets("SITE Model").Range("C6").Value = "DB"

For i = Sheets("NETWORK Model").Range("C8") To Sheets("NETWORK Model").Range("C9")
Sheets("SITE Model").Select
Range("C8").Select
ActiveCell.FormulaR1C1 = i
Sheets("NETWORK Model").Select
Range("D37:EF41").Select
Selection.Copy
Range("D27").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


Sheets("NETWORK Model").Range("C62").CopySheets("SITE Model").Range ("K2")

如何将范围 (k2) 更改为下一个循环的一行?

谢谢!

【问题讨论】:

  • 嗨。代码似乎不完整。请仔细检查

标签: excel vba for-loop copy-paste


【解决方案1】:

您需要对单元格 K2 进行动态引用,以便它随着循环的每次迭代而变化。

包含一个新变量,然后将其用作行号。请记住确保在循环结束之前 +1,这样当它跳回顶部进行下一次迭代时,变量会增加 1,从而将行号向下移动。

示例:

Dim lRowNum As Long

  'Insert this line before the start of your loop.
  lRowNum = 2

  ' Replace your last line with these two lines.
  Sheets("NETWORK Model").Range("C62").CopySheets("SITE Model").Range ("K" & lRowNum)
  lRowNum = lRowNum + 1

一般要点:

除了使用.select.copy 之外,还有更有效的方法来引用您需要的范围并将其传输/复制到所需位置。我还强烈建议您始终使用工作表前缀来限定 .range 语句。这将确保您的代码始终在正确的工作表和正确的单元格区域上执行。例如,而不是 -

Sheets("NETWORK Model").Select
Range("D37:EF41").Select
Selection.Copy
Range("D27").Select
Selection.PasteSpecial...

你可以在一行中这样写;

Sheets("NETWORK Model").Range("D27:EF31").Value = Sheets("NETWORK Model").Range("D37:EF41").Value

(我可能误解了您要将 NETWORK Model 范围复制到的确切位置,但这应该让您了解如何构造语句以更有效的方式完成相同的任务。当然,您可以更喜欢使用 .select .copy.pastespecial 取决于你!)

【讨论】:

  • 谢谢!这是一个非常有用的答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多