Excel 如何将宏录制更改为VBA for loop以获得更大的范围?

Excel 如何将宏录制更改为VBA for loop以获得更大的范围?,excel,vba,Excel,Vba,好的,所以我正在努力使这更容易遵循,以便我得到更好的帮助。 这是我目前从录制的宏中获得的代码。 这是一次迭代,我需要153次。它的作用:1。清除B2并将格式设置为常规格式,因为它在每次迭代后自动更改为数字。2.参考图纸NB称重传感器R[4]C[-1],并将其粘贴到图纸最大电流传感器B2中。3.按下“计算工作表”按钮。4.将图纸最大电流传感器B6和B7中的值复制并作为数字粘贴到图纸NB负荷记录传感器B5和C5中 例如,下一次迭代将使用薄板NB称重传感器R[5]C[-1],并输入相同的位置,复制相同

好的,所以我正在努力使这更容易遵循,以便我得到更好的帮助。 这是我目前从录制的宏中获得的代码。 这是一次迭代,我需要153次。它的作用:1。清除B2并将格式设置为常规格式,因为它在每次迭代后自动更改为数字。2.参考图纸NB称重传感器R[4]C[-1],并将其粘贴到图纸最大电流传感器B2中。3.按下“计算工作表”按钮。4.将图纸最大电流传感器B6和B7中的值复制并作为数字粘贴到图纸NB负荷记录传感器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次迭代而不将它们全部输入?谢谢你的帮助

上面的代码描述与录制的宏不一致,其中显示的代码复制和粘贴的单元格与预期的不同

在任何情况下,应通过以下方式实现:

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

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

我尝试过使用它,只是它一直将其存储在同一单元格中。它将其全部存储在板材NB装载簿B5和C5中。该单元格会随着每次迭代而不断变化,但我需要将值存储在下一行中,以此类推。像B6C6和B7C7etc@samred我发布的代码复制了Max Amps B6和B7中的数据,然后将这些值粘贴到NB Load Book B5和C5中。在下一次迭代中,它将从最大安培数B6和B7复制,然后粘贴到NB中。。B6和C6等。“最大安培数中的“复制自”值是常量,但“NB负荷簿”值是可变的。@samred“最大安培数”中的复制值是否需要可变,并在每次迭代中增加“复制自”行?底部的“myval”是否也应为“myRCval”?最大安培数中的复制值根据粘贴到单元格中的初始“NB负荷簿”值而变化B1。从最大安培数b6和b7复制的值始终分别为数字/日期,但实际数字或日期根据输入到最大安培数B1的内容而变化。