Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel-makro-kopiuj i wklej do nowo utorzonego arkusza jeśli suma >20

Kiri1234 08 Wrz 2017 09:34 1185 26
  • #1 08 Wrz 2017 09:34
    Kiri1234
    Poziom 3  

    Cześć,

    Chcę stworzyć makro, który sumuje dane w komórkach kolumny P i w momencie gdy suma przekroczy 20 otwiera nowy skoroszyt i wkleja do określonego arkusza zakres komórek A1:Sn+1 lub całe wiersze 1:n+1. Po czy sprawdza dalej, aż do ostatniej aktywnej komórki.

    Udało mi się stworzyć coś takiego, ale niestety wyrzuca mi błąd :(

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Bardzo prosze o pomoc!

    0 26
  • #3 08 Wrz 2017 10:24
    Kiri1234
    Poziom 3  

    Run-time error: '1004':
    Method 'Range' of object 'Global' failed

    Dodano po 27 [minuty]:

    Język to VBA nie jestem pewna jaki syntax mam wybrać

    0
  • #4 08 Wrz 2017 10:44
    Loker
    Poziom 38  

    A cóż to ma być: Range("n+1:n+1").Select ? ;)

    0
  • #5 08 Wrz 2017 10:58
    Kiri1234
    Poziom 3  

    Chciałam, zeby zaznaczyło mi wiersze od 1 do n+1 :)
    Ewentualnie, aby zaznaczyło obszar A1:Sn+1
    Jendak jak próbuje zrobić zakres zaznaczenia Range("n:n").Select lub Range("A1:Sn+1").Select, wyrzuca mnie z Excela :/

    0
  • #7 08 Wrz 2017 12:09
    Loker
    Poziom 38  

    Chodzi mi o składnię. Poprawnie byłoby Range(n + 1 & ":" & n + 1).Select - nie wnikając, co ma być zaznaczone.

    0
  • #8 08 Wrz 2017 13:17
    JRV
    Specjalista - VBA, Excel

    Range(" A1:S" & n+1 ).Select

    Dodano po 2 [minuty]:

    lub
    Range("1:" & n+1).Select

    0
  • #9 08 Wrz 2017 14:02
    Kiri1234
    Poziom 3  

    Range(" A1:S" & n+1 ).Select tak próbowałam i wyrzuciło mnie z Excel :(

    Chodziło mi o wiersze lub komórki A:Sn+1

    Przy wszystkich zaproponowanych wyrzuca mnie z Excela.

    Natomiast przy zastosowaniu Rows("n:n").Select wyrzuca błąd:
    Run-time error: '1004':
    Application-defined or object-defined error :(

    0
  • #10 08 Wrz 2017 14:35
    Andrzej Rejnhard
    Poziom 2  

    Kod: text
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #11 08 Wrz 2017 15:01
    JRV
    Specjalista - VBA, Excel

    Kiri1234 napisał:
    Range(" A1:S" & n+1 ).Select tak próbowałam i wyrzuciło mnie

    Mam nadzieje, ze przed tym byla wartosc n znalezena i > 0
    Cytat:
    For n = 0 To Cells(65536, "P").End(xlUp).Row

    0
  • Pomocny post
    #12 08 Wrz 2017 15:11
    Loker
    Poziom 38  

    Po pierwsze - ustaw breakpoint'y i zobacz, w którym miejscu Cie "wyrzuca".
    Po drugie - po osiągnięciu sumy >20 przechodzisz do nowego arkusza, coś tam wklejasz po czym nie wracasz do pierwotnego arkusza - a Twój kod pracuje na arkuszu w tym momencie aktywnym.

    0
  • #13 11 Wrz 2017 13:45
    Kiri1234
    Poziom 3  

    Hmm a jeśli wykorzystałam poprzednie makro, które napisałam, które wstawia dodatkowy wiersz jeśli suma>20 i odwołuje się do niego.
    Natomiest nowe makro ma wyszukiwac pustego wiersza i wklejać do nowo otwartego pliku zakres 1:pusty wiersz do określonej zakłądki AERO.

    Mam coś takiego, ale wyrzuca mnie(po wstawieniu Breakpointu) w odwołaniu do otwarcia nowego skoroszytu, mim, że samo makro otwarcia działa poprawnie.

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Makro Kopiuj_wklej_jeśli pusty, kopiuje mi tylko pierwszy wiersz i wyrzuca mnie kiedy jest odwołanie do Nowy_skoroszyt_1

    Dodano po 2 [godziny] 26 [minuty]:

    Udao mi si kopiowanie, do pierwszej sumy 20, ale wyrzuca mi Excela jak ma otworzyć nowego Excela :(

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Dodano po 19 [minuty]:

    0
  • #14 19 Wrz 2017 01:39
    lanzul
    Poziom 26  

    Kiri1234 napisał:
    ...
    Udao mi si kopiowanie, do pierwszej sumy 20, ale wyrzuca mi Excela jak ma otworzyć nowego Excela :(

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Pytania / uwagi:
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    0
  • #15 19 Wrz 2017 10:40
    Kiri1234
    Poziom 3  

    Cześć!
    Jest aktywna zakładka Bezpieczne stąd odwołanie do arkusza aero.

    Tak, liczba wierszy może się zmieniać, stąd odwołanie do ostatniej pustej.

    Variant, bo n jest zmienną.

    Long, gdyż p to kolumna wyczytałam, że tak powinna byc oznaczona.

    Sumy nie zadeklarowałam tylko określiłam ją jako =0, wylicza poprawnie, mimo wszystko trzeba ją zadeklarować?

    Do polecanie Widnows.Activate nawet mi nie dochodzi, wyrzuca mnie przy Call Nowy_)skoroszyt_1

    Widnows.Activate zmieniłam na coś takieg:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #16 19 Wrz 2017 12:52
    JRV
    Specjalista - VBA, Excel

    Wniosek w powyższej korespondencji:
    Jest skoroszyt Truck.xls, w nim arkusz danych Aero.
    Chceme kopiowac do nowo utworzonego skoroszytu wiersze z Sumy>20.
    Pytanie: w którym skoroszycie Truck lub nowom chceme wstawic puste wiesze?
    Lub w obu?

    0
  • #17 19 Wrz 2017 13:08
    Kiri1234
    Poziom 3  

    Chcemy wstawić w nowo otwarty skoroszyt, w arkusz aero :)

    0
  • #18 19 Wrz 2017 13:32
    JRV
    Specjalista - VBA, Excel

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #19 19 Wrz 2017 14:01
    lanzul
    Poziom 26  

    Kiri1234 napisał:
    Variant, bo n jest zmienną.

    Long, gdyż p to kolumna wyczytałam, że tak powinna byc oznaczona.

    Sumy nie zadeklarowałam tylko określiłam ją jako =0, wylicza poprawnie, mimo wszystko trzeba ją zadeklarować?

    'a', 'p', 'n', "Suma" - to wszystko są zmienne, różnią się tylko typem danych, które są w nich "przechowywane" - w dużym skrócie, 'Variant' to typ domyślny, który "sam sobie wybiera typ danych dla zmiennej", 'Long' to typ danych liczb całkowitych "długich".
    U ciebie 'a', 'p' i 'n' są zmiennymi typu liczb całkowitych.

    'p' jako zmienna opisująca nr kolumny może być typu 'Integer', tj. przechowywać wartości dodatnie do 32767 - więcej kolumn chyba w nowych excelach nie ma.

    'Suma' - również wydaje się liczbą typu całkowitego, chociaż lepiej by było zadeklarować ją jako 'Double', czyli zmiennoprzecinkową - mogłaby wtedy przechowywać "duże" sumy, jeśli takie mogą się pojawić i jeśli mogłyby mieć część niecalkowitą - w innym przypadku wystarczy 'Long'.

    Dobrze by było deklarować wszystkie zmienne - miałabyś wtedy nad nimi kontrolę.
    Na początku modułu dobrze by było dodać 'Option Explicit', wtedy deklaracja zmiennych zostaje "wymuszona" na użytkowniku i żadna zmienna "nie ujdzie naszej uwadze".

    0
  • #20 19 Wrz 2017 14:19
    Kiri1234
    Poziom 3  

    Ok, dziękuję za objaśnienei! :)
    A czemu wyrzuca mnie z Excela kiedy odwołuję się do makra Nowy_skoroszyt_1(), które samodzielnie działa poprawnie?

    Set my = Workbooks("Truck.xls").Sheets("Aero")

    wyrzuca mi błąd Run-time error "13": Type mismatch :(

    0
  • #21 19 Wrz 2017 14:22
    JRV
    Specjalista - VBA, Excel

    Przepraszam
    ma byc Dim my As Worksheet

    0
  • #22 19 Wrz 2017 14:31
    Kiri1234
    Poziom 3  

    Teraz działa poprawnie, dziękuję!
    Tylko zależało mi, żeby z każdą kolejną osiągniętą sumą otwierał nowego Excela i wstawiał w Arkusz Aero właśnie w tym Excelu - czyli otworzył tyle Exceli ile jest sum <20

    0
  • Pomocny post
    #23 19 Wrz 2017 14:39
    lanzul
    Poziom 26  

    Kiri1234 napisał:
    Ok, dziękuję za objaśnienei! :)
    A czemu wyrzuca mnie z Excela kiedy odwołuję się do makra Nowy_skoroszyt_1(), które samodzielnie działa poprawnie?

    Set my = Workbooks("Truck.xls").Sheets("Aero")

    wyrzuca mi błąd Run-time error "13": Type mismatch :(

    Błąd typu zmiennych - niezgodność typów.
    Duże pole do gdybania, bez "materiału porównawczego".
    Może to być spowodowane chociażby deklaracją pewnych zmiennych jako 'Variant', kiedy w podtypie tych zmiennych coś nie pasuje kompilatorowi.
    Podana przez ciebie zmienna 'my' jest typu obiektowego (Object\Worksheet) - a jak jest wykorzystana w kodzie ?
    Opisz w punktach kolejność czynności i kolejność uruchamianych makr - na razie to tu tak bardzo "na sucho" wszystko jest rozwiązywane.
    Które makra i w jakiej postaci wykorzystujesz "na tę chwilę" ?

    Dodano po 1 [minuty]:

    No proszę i już jest rozwiązanie ... :)

    0
  • #24 19 Wrz 2017 14:54
    JRV
    Specjalista - VBA, Excel

    Kiri1234 napisał:
    otwierał nowego Excela
    nowe wystąpienie programu Excel, lub nowy skoroszyt?

    0
  • #25 19 Wrz 2017 14:57
    Kiri1234
    Poziom 3  

    Więc tak: mam skoroszyt z makrami, do którego wklejam tabele A:S z niewiadomą liczbą wierszy. Na tą chwilę makra sortują mi tą tabelę po kilku wartościach i odpowiednio rozdziela sortowane wartości po arkuszach nowo utworzonego pliku. Teraz chcę, zeby w nowym pliku, który jest zapisany Truck na pulpicie, sumował mi wartości kolumny P, otwierał nowe excele za każdym razem jak suma <=20 i wklejał te wartości do nowego Excela.

    Po kolei makra:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    I teraz właśnie przechodzę do części, żeby otwierać nowe Excele kiedy suma <=20 i wklejać te wartości tym makrem:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #26 19 Wrz 2017 14:58
    JRV
    Specjalista - VBA, Excel

    Kiri1234 napisał:
    otwierał nowego Excela
    nowe wystąpienie programu Excel, lub nowy skoroszyt? Myslim ze skoroszyt:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #27 20 Wrz 2017 10:13
    Kiri1234
    Poziom 3  

    Działa poprawnie, dziękuję bardzo! :)

    0