如何将此宏录制应用于整个工作表?

时间:2017-04-26 15:28:17

标签: excel-vba vba excel

这是代码:

Sub Macro11()

Sheets("Max Amps").Select
Range("B1").Select
Application.CutCopyMode = False
Selection.ClearContents
Selection.NumberFormat = "General"
ActiveCell.FormulaR1C1 = "='Load Book'!R[7]C[-1]"
Range("B2").Select
ActiveSheet.Calculate
Range("B6").Select
Selection.Copy
Sheets("Load Book").Select
Range("B8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Sheets("Max Amps").Select
Range("B7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Load Book").Select
Range("C8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range("C5:C8").Select
Application.CutCopyMode = False
Selection.NumberFormat = "m/d/yyyy"
Range("B9").Select
Sheets("Max Amps").Select
Range("B1").Select
Selection.ClearContents
Selection.NumberFormat = "General"
ActiveCell.FormulaR1C1 = "='Load Book'!R[8]C[-1]"
Range("B2").Select
ActiveSheet.Calculate
Range("B6").Select
Selection.Copy
Sheets("Load Book").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Sheets("Max Amps").Select
Range("B7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Load Book").Select
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range("B10").Select
Sheets("Max Amps").Select
Range("B1").Select
Application.CutCopyMode = False
Selection.ClearContents
Selection.NumberFormat = "General"
ActiveCell.FormulaR1C1 = "='Load Book'!R[9]C[-1]"
Range("B2").Select
ActiveSheet.Calculate
Range("B6").Select
Selection.Copy
Sheets("Load Book").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range("C10").Select
Sheets("Max Amps").Select
Range("B7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Load Book").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range("B11").Select
Sheets("Max Amps").Select
Range("B1").Select
Application.CutCopyMode = False
Range("B1").Select
Selection.NumberFormat = "General"
Selection.ClearContents
ActiveCell.FormulaR1C1 = "='Load Book'!R[10]C[-1]"
Range("B2").Select
ActiveSheet.Calculate
Range("B6").Select
Selection.Copy
Sheets("Load Book").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Sheets("Max Amps").Select
Range("B7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Load Book").Select
Range("C11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
End Sub

我知道它很长而且很乱,但它是通过Macro录制完成的,因为我是VBA的新手。我有大约50-60行,我需要这样做,但我觉得这是一个更简单的自动化方法...以某种方式使用for循环。如何使用循环而不是每次迭代的记录来实现此代码?上面显示的代码显示了4次迭代。 R [7]至R [10]

1 个答案:

答案 0 :(得分:0)

是的,这非常混乱,难以理解 我你正试图这样做:

Public Sub Test()

    Dim lCounter As Long
    Dim wrkSht As Worksheet

    Set wrkSht = ThisWorkbook.Worksheets("Load Book")

    With ThisWorkbook.Worksheets("Max Amps")
        For lCounter = 7 To 10

            'Update the formula in cell B1 to the row indicated by lCounter.
            .Cells(1, 2).FormulaR1C1 = "='Load Book'!R" & lCounter & "C1"

            'Copy the value from cells B6 and B7 to cells B8 and C8 on 'Load Book'.
            wrkSht.Cells(8, 2) = .Cells(6, 2)
            wrkSht.Cells(8, 3) = .Cells(7, 2)

        Next lCounter
    End With

End Sub