2017-02-01 11 views
0

Ich arbeite an der Automatisierung einiger Berichte durch Einfügen von Daten aus Raw-Dateien in meine Vorlage namens PA Reach. Ich habe eine Reihe „Sumrow“ genannt, und ich brauche VBA die Zahlen oben in jeder der Schleifen AutoSum nachdem Sie die Daten in einfügen Hier ist, was ich habe, und ich bin immer Fehler.VBA zu AutoSUM ausgewählt Bereich

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

Sie diesen Code reinigen könnten viel Verfolgung [Vermeiden Wählen/Aktivieren ] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) – Rdster

Antwort

0

Es gibt keine müssen SelectRange("sumrow"), und dann Selection verwenden, können Sie die Formula zu Range direkt ändern.

Versuchen Sie den Code unten, wird es die Sum Formel in der Zeile unterhalb der unteren Zeile Ihres „sumrow“ benannten Bereich setzen:

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

Das ist genial, und es hat funktioniert. Es summiert sich seitwärts, wie kann ich es nur in der Reihe oben summieren? – SQUISH

+0

@SQUISH was meinst du nur die Reihe oben? Sie möchten nur die letzte Zeile aus dem gesamten Bereich summieren? –

+0

Ich möchte die Zellen im sumrow direkt oben summieren, gerade jetzt summiert es die ganze Reihe ... macht das Sinn? – SQUISH