2017-02-01 11 views
0

私はPAのReachと呼ばれるテンプレートに生のファイルからのデータを貼り付けることによっていくつかのレポートを自動化する作業に取り組んでいます。私は「Sumrow」の範囲を命名していると私は、内のデータを貼り付けた後、ループのそれぞれに上記の数字をオートSUMするVBAを必要とするここで私が持っているものであり、私はエラーを取得しています:。VBA to AutoSUMを選択範囲

Workbooks.Open datapath & datafile1 & OutputFileExt 
    Sheets("Rep").Activate 
    ActiveSheet.UsedRange.AutoFilter   

    For i = 1 To terrs_to_generate 
    Workbooks(builder).Sheets("Control").Activate 

    Range("Reportnum") = i 
    currfile = Range("CurrFile").Value 
    currterr = Range("CurrTerr").Value 
    currRep = Range("currRep").Value 
    terrname = Range("terrname").Value 
    DMName = Range("DMName").Value 
    TMStartDate = Range("TMstartdate").Value 

    'open template 
    Workbooks.Open templatepath & templatefile & OutputFileExt 

    Set currtemplatefile = ActiveWorkbook 

    Sheets("Control").Select 
    Sheets("control").Range("terrname") = terrname 
    Sheets("control").Range("repname") = currRep 
    Sheets("control").Range("reportdate") = reportdate 
    Sheets("control").Range("TMstartdate") = TMStartDate 
    Sheets("control").Range("DMName") = DMName 
    Sheets("control").Range("Territory") = currterr 

    Workbooks(datafile1 & OutputFileExt).Activate 
    Selection.AutoFilter field:=1, Criteria1:=currterr 

    Range("A1").Select 
    Range(Selection.Offset(1, 1).End(xlDown), Selection.End(xlToRight)).Copy 
    currtemplatefile.Activate 
    Sheets("PA Reach").Select 
    Range("pasterange").Select 
    Selection.PasteSpecial Paste:=xlPasteValues 

    currtemplatefile.Activate 
    Range("formatrow").Copy 

    Range("pasterange").Select 
    Range(Selection.End(xlToRight), Selection.End(xlDown).Offset(0, 0)).Select 
    Selection.PasteSpecial Paste:=xlPasteFormats 

    'Delete PasteRange 
    Range("pasterange").Select 
    Selection.EntireRow.Delete 

    'Value Range Sheet so no formulas show 
    ActiveSheet.UsedRange.Select 
    Selection.Copy 
    Selection.PasteSpecial Paste:=xlPasteValues 

    Range("A1").Select 



Sheets("control").Delete 
'need to add in sum total 
Range("sumrow1").End(xlDown).Offset(1, 0) = "=Sum(" & Range("sumrow1").Address(True, True) & ")" 



    'save as and close 
    ActiveWorkbook.SaveAs Filename:=(reportpath & currfile & OutputFileExt) 'not working 
+1

を[選択/ Activateを避けてください](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) – Rdster

答えて

0

なしありSelectRange("sumrow")にしてからSelectionを使用すると、FormulaRangeに直接変更することができます。

それはあなたの「sumrow」の下の行の下の行に名前付き範囲Sum式を置く、以下のコードを試してみてください:あなたは、次の多くをそのコードをクリーンアップすることができ

Range("sumrow").End(xlDown).Offset(1, 0) = "=Sum(" & Range("sumrow").Address(True, True) & ")" 
+0

これは素晴らしい、それは働いた。しかし、それは横にSUMming、どのように私はそれが上記の行だけを合計することができますか? – SQUISH

+0

@SQUISH上記の行はどういう意味ですか?あなたは全体の範囲から最後の行だけを合計したいですか? –

+0

私はすぐ上のsumrowのセルを合計したい、今すぐそれは全体の行を合計しています..それは意味をなさない? – SQUISH