如何将宏录制更改为VBA for循环更大范围?

时间:2017-04-26 17:01:20

标签: excel-vba vba excel

好的所以我想让这个更容易理解,以便我得到更好的帮助。 这是我目前从录制的宏中获得的代码。 这是一次迭代,我需要153.它的作用:1。清除B2并将格式设置为一般,因为它在每次迭代后自动更改为数字。 2.纸张NB装载书单元格R [4] C [-1]被引用并粘贴到纸张最大安培单元格B2中。 3.按下计算工作表按钮。 4.将纸张Max Amps单元格B6和B7中的值复制并粘贴到纸张NB Load Book单元格B5和C5中。

例如,下一次迭代将使用工作表NB装订簿单元格R [5] C [-1]并进入相同位置并复制相同的单元格并将其作为编号粘贴到工作表NB装载簿单元格B6和C6中。  需要这一直到第153行......所以直到R [152] C [-1]。

Sub Macro10()
    Sheets("Max Amps").Select
    Range("B1").Select
    Selection.ClearContents
    Selection.NumberFormat = "General"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "='NB Load Book'!R[4]C[-1]"
    Range("B2").Select
    ActiveSheet.Calculate
    Range("B6").Select
    Selection.Copy
    Sheets("NB Load Book").Select
    Range("B5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Max Amps").Select
    Range("B7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("NB Load Book").Select
    Range("C5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

我再一次知道这很乱,但我是初学者。如何才能将此代码应用于153次迭代而无需全部输入?谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的代码上方的描述与您录制的宏不一致,其中代码显示副本&不同于您描述的不同细胞的糊状物。

无论如何,下面应该这样做:

Sub Macro10()

myRCval = 4
myBval = 5
myCval = 5 

For i = 1 To 153


ThisWorkbook.Worksheets("Max Amps").Range("B1").ClearContents
ThisWorkbook.Worksheets("Max Amps").Range("B1").NumberFormat = "General"
ThisWorkbook.Worksheets("Max Amps").Range("B1").Value = "='NB Load Book'!R[" & myRCval & "]C[-1]"
ThisWorkbook.Worksheets("Max Amps").Calculate
ThisWorkbook.Worksheets("Max Amps").Range("B6").Copy
ThisWorkbook.Worksheets("NB Load Book").Range("B" & myBval).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ThisWorkbook.Worksheets("Max Amps").Range("B7").Copy
ThisWorkbook.Worksheets("NB Load Book").Range("C" & myCval).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

myRCval = myRCval + 1
myBval = myBval + 1
myCval = myCval + 1
Next i

Application.CutCopyMode = False
MsgBox "Done"

End Sub

您可以根据需要修改变量。