将循环结果复制并粘贴到另一个 sheet 的列中
Copy and pasting a looped result down a column in another sheet
这是我当前的代码,我想更改最后一行。
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)?
谢谢!
您需要动态引用单元格 K2,以便它随着循环的每次迭代而变化。
包括一个新变量,然后将其用于行号。请记住确保在循环结束前+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
之外,还有更有效的方法来引用您需要的范围并将其 transfer/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 模型范围复制到的确切位置,但这应该让您了解如何构建语句以更有效的方式完成相同的任务。当然,您可能更喜欢使用 .select
.copy
和 .pastespecial
,这取决于您!)
这是我当前的代码,我想更改最后一行。
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)?
谢谢!
您需要动态引用单元格 K2,以便它随着循环的每次迭代而变化。
包括一个新变量,然后将其用于行号。请记住确保在循环结束前+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
之外,还有更有效的方法来引用您需要的范围并将其 transfer/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 模型范围复制到的确切位置,但这应该让您了解如何构建语句以更有效的方式完成相同的任务。当然,您可能更喜欢使用 .select
.copy
和 .pastespecial
,这取决于您!)