VBA dynamiczne autosumowanie

0

Witam,

nagrałem w excel makro, która ma za zadanie m.in sumowanie pewien zakres komórek. Niestety przy zmianie ilości wierszy nie dochodzi do sumowania wartości. Poniżej kod makra. Będę wdzięczny za pomoc, gdzie dokonać zmian.

Sub fv_073()

Range("A:A,G:G,H:H,O:O,P:P").Select

Range("P1").Activate

ActiveWindow.SmallScroll ToRight:=8

Range("A:A,G:G,H:H,O:O,P:P,W:W,X:X,Y:Y,Z:Z").Select

Range("Z1").Activate

ActiveWindow.ScrollColumn = 11

Range("A:A,G:G,H:H,O:O,P:P,W:W,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC").Select

Range("AC1").Activate

Selection.Delete Shift:=xlToLeft

ActiveWindow.ScrollColumn = 1

Rows("1:1").Select

Selection.AutoFilter

ActiveSheet.Range("$A$1:$AC$61").AutoFilter Field:=13

ActiveSheet.Range("$A$1:$AC$61").AutoFilter Field:=13, Criteria1:="TAK"

ActiveSheet.Range("$A$1:$AC$61").AutoFilter Field:=17, Criteria1:="=Braki" _

    , Operator:=xlOr, Criteria2:="=Do uruchomienia"

Range("E9:E62").Select

Range("E62").Activate

ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[-53]C:R[-1]C)"

Range("D62").Select

ActiveCell.FormulaR1C1 = "SUMA"

Range("D63").Select
End sub
0

Ciężko się czyta nagranie....
W skrócie - to co nagrałeś, w tej chwili może odtworzyć w tej chwili tylko i wyłącznie Twoje dokładnie czynności które zrobiłeś - i przy okazji narobić kupę bałaganu.

odniosę się tylko do fragmentu Twojego kodu:

Range("E62").Activate
ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[-53]C:R[-1]C)"

przed tym fragmentem kodu robiłeś jeszcze jakie autofiltorwanie..
ale ten fragment co robi? - w komórce e62 wpisujesz na sztywno sumę tego co masz powyżej (ale pamiętaj, że już jest tam jakiś autofilr...)
więc zakładając że wiersz 62 był ostatnim pustym i mogłeś to zrobić, to teraz jak dodasz 30 kolejnych wierszy, czyli pierwszy pusty będzie 92,
to po odpaleniu makra Twój kod leci do 62 i robi to samo co robiłeś nagrywając (czyli ignoruje te nowe 30 wierszy)

Z tego co mogę się domyślać, to możesz poczytać jak znaleźć ostatni wiersz w zakresie, przejść do następnego i wtedy masz gwarancję (teroetycznie) że to jest pusty wiersz i możesz w nim sumować (ale też dynamicznie a nie na sztywno)

pierwsze z brzegu wyszukiwanie ostatniego wiersza w excelu:
https://www.wallstreetmojo.com/vba-last-row/

1

Nie musisz nic robić za pomocą VBA. To co jest w tym kodzie, to Excel ma wbudowane. Musisz tylko swój obszar danych zamienić na tabelę (CTRL-L lub CTRL-T) i w menu "Projekt tabeli" włączyć (jeśli domyślnie nie było włączone) opcję "Wiersz sumy"

1 użytkowników online, w tym zalogowanych: 0, gości: 1