Excelmacros – 重复一个过程

我有一个录制的macros,在Excel中的一个简单的过程。 但是,我需要它重复约80行的过程。 这是我前四行的代码。 任何帮助简单的方法来做到这一点,将不胜感激。 谢谢。

Sub Macro2() ' ' Macro2 Macro ' ' Range("A5").Select ActiveCell.FormulaR1C1 = "1" Sheets("EST COST").Select Range("D6").Select Selection.Copy Sheets("IL").Select Range("I5").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A5").Select ActiveCell.FormulaR1C1 = "0" Range("A6").Select ActiveCell.FormulaR1C1 = "1" Sheets("EST COST").Select Range("D6").Select Selection.Copy Sheets("IL").Select Range("I6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A6").Select ActiveCell.FormulaR1C1 = "0" Range("A7").Select ActiveCell.FormulaR1C1 = "1" Sheets("EST COST").Select Range("D6").Select Selection.Copy Sheets("IL").Select Range("I7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A7").Select ActiveCell.FormulaR1C1 = "0" End Sub 

你想使用for … next循环。 一些谷歌应该让你相当远,但这是一个总体思路的味道:

 dim startRow as integer dim endRow as integer dim myColumn as integer startRow = 5 endRow = 45 For activeRow = startRow to endRow [do something] myColumn = [some column number] cells(activeRow, myColumn).Value = [something] Next activeRow 

像这样的东西

 Sub test() Dim wsTarget As Worksheet Dim wsSource As Worksheet Set wsTarget = Sheets("EST COST") Set wsSource = Sheets("IL") Dim intIndex As Integer For intIndex = 5 To 85 wsTarget.Range("A" & intIndex).FormulaR1C1 = "1" wsTarget.Range("D" & intIndex).Copy With wsSource .Range("I" & intIndex).PasteSpecial Paste:=xlPasteValues _ , Operation:=xlNone, SkipBlanks:=False, Transpose:=False .Range("A" & intIndex).FormulaR1C1 = "0" End With Next End Sub 

要保持代码与您的代码类似,请尝试以下操作:

 Sub test() Dim rng As Range Dim i& For i = 5 To 40 ' WHAT SHEET IS YOUR DEFAULT RANGES ON? Range("A" & i).FormulaR1C1 = "1" ' what sheet is this on? We want to be explicit Sheets("EST COST").Range("D" & i + 1).Copy Sheets("IL").Range("I" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A" & i).FormulaR1C1 = "0" Next i End Sub 

我假设你想粘贴的范围被抵消一行(你复制A5,粘贴到I6)。 正如我所指出的,我宁愿知道你的范围被复制的是什么表,所以我们可以将该工作表添加到范围( Range("A"& i)...应该真的是Sheets("mainSheet").Range("A"&i)...