2017-04-26 113 views
0

好吧所以我试图让这个更容易遵循,所以我得到更好的帮助。 这是我目前从记录的宏中得到的代码。 这是一次迭代,我需要153.它的作用:1.清除B2并将格式设置为常规,因为它在每次迭代后自动更改为数字。 2.工作表NB装载簿单元R [4] C [-1]被引用并粘贴到工作表Max Amps单元格B2中。 3.按下计算表单按钮。 4.纸张最大安培单元格B6和B7中的值被复制并作为数字粘贴到纸张NB装入书单元格B5和C5中。如何将宏记录更改为VBA for更大范围的循环?

例如,下一次迭代将使用工作表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次迭代而不用全部输入?感谢您的帮助。

回答

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 

您认为合适的话,可以修改变量。

+0

我试过使用这个,除了它一直保存在同一个单元格中。它将它全部存储在Sheet NB Load Book B5和C5中。该单元格随着每次迭代而不断变化,但我需要将值存储在下一行中,依此类推。像b6 c6和b7 c7 etc – samred

+0

@samred我发布的代码复制了Max Amps B6和B7中的数据,然后将这些值粘贴到NB Load Book B5&C5中。在下一次迭代中,它将从Max Amps B6和B7中复制,然后粘贴到NB .. B6和C6中,依此类推。从最大放大器中复制的值是恒定的,但NB负载簿值是可变的。 – CaptainABC

+0

@samred Max Amps中的复制值是否需要变量,并增加每次迭代中从行复制的值? – CaptainABC