2017-04-26 2 views
0

これはコードです:このマクロ記録をシート全体に適用するにはどうすればよいですか?

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 

、私はそれが非常に長いと厄介だ知っているが、私はVBAに新たなんだので、それはマクロの記録を介して行われます。私はこれを行うために必要な約50-60行を持っていますが、私はtheresのように、これを自動化するより簡単な方法と思います... forループをどうにかして。各繰り返しの録音の代わりにループでこのコードを実装するにはどうすればよいですか?上記のコードは4回の反復を示しています。 R [7]〜R [10]

答えて

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 
+0

各繰り返しペースト。最初の反復の場合と同様に、最初の繰り返しでは、Load BookシートのRow 1 Column 1とし、Max amps B2で貼り付けた値を使用します。シートを計算した後、Max AmpsシートセルB8とB9の値がRow1 Column1の最初のコピーされた値の隣に貼り付けられます。Row 1 Column 2とColumn 3 – samred

+0

Oops B6とB7を貼り付ける必要がありますB8とC8に​​変換する。しかし、行は発生するr1c1ごとに変化します。たとえば、R [7] C [-1]はMax AmpsセルB2にコピーされます。次に、シートを計算します。次にMax Amps Cell B6とB7がLoad Book Cell B8とC8に​​貼り付けられます。これと同じプロセスがR [8] C [-1]に対してaganiで実行され、最大アンプからの結果がB9 C9にペーストされます。ちょうどそれはそれを投稿するだけだと思います。b8 c8 – samred

+0

したがって、アクティブなセルから7行下に、そして左に1列( 'R [7] C [-1]')がセル 'B2'にコピーされ、 'B1'はあなたのコード内のアクティブなセルです - それで、セル' A8'を見ていますか?行7を見たい場合、列1は 'R7C1'を使います。大括弧は相対参照にします。あなたが何をしているのかはっきりしていませんが、 'lCounter'変数を使ってペースト・セルを更新することができます - ' wrkSht.Cells(8,2)= .Cells(lCounter、2) ' –

関連する問題