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- automatyczne kopiowanie większej zawartości pól

JaroFon 02 Cze 2011 21:57 11414 64
  • #1 02 Cze 2011 21:57
    JaroFon
    Poziom 23  

    Witam ponownie. Tym razem proszę o pomoc w rozwiązaniu opcji automatycznego kopiowania. W arkuszu poniżej umieściłem dwie tabele, jedna to nazwijmy ją szychtownica a druga to wzór systemu dla danej grupy. Teraz chciałbym uzyskać sposób kopiowania taki aby po wpisaniu w górnej tabeli do rubryki "Grupa" przypisanej grupy danemu pracownikowi od A do D automatycznie został skopiowany wzór systemu dla danej grupa A,B,C lub D z jego całą zawartością. Jak można tego dokonać?

    0 29
  • #3 03 Cze 2011 16:13
    JaroFon
    Poziom 23  

    @PeteSh właśnie o takie kopiowanie mi chodzi ale niestety nie do końca dobrze sprecyzowałem to co chcę osiągnąć takim kopiowanie. Ogólnie zasada jest taka jak to Zrobiłeś ale ja chcę skopiować dosłownie wszystko, zakolorowane pola i formaty, a to co Ty zrobiłeś kopiuje tylko to co jest wpisane w polach we wzorze. Szczególnie chodzi mi o formaty ponieważ docelowo każde pole we wzorze będzie sformatowane i do każdego pola będzie dodana rozwijana lista. I teraz widzę że automatyczne kopiowanie które chcę osiągnąć nie może być zrobione na formułach ponieważ w polach w które wpisane są formuły kopiujące będą wpisywane inne dane (dokładnie dniówki) więc te pola nie mogą mieć żadnych formuł. Czy da się to kopiowanie zrobić w inny sposób, np. przez jakiś sposób formatowania, byle będzie to proste i dam se z tym radę. A za to co mi podesłałeś i tak dziękuję, to może mi się do czegoś jeszcze przydać bo i tak nie wiedziałem że tak można zrobić.

    0
  • #4 03 Cze 2011 17:02
    PeteSh
    Poziom 30  

    JaroFon napisał:
    ...w polach w które wpisane są formuły kopiujące będą wpisywane inne dane (dokładnie dniówki) więc te pola nie mogą mieć żadnych formuł

    Czyli nie chodziło Ci o kopiowanie zawartości, a wyłącznie formatów? Co dokładnie chciałbyś skopiować? Tło, ramki, ... ?

    0
  • #5 03 Cze 2011 17:56
    JaroFon
    Poziom 23  

    Chciałbym skopiować dokładnie wszystko co zawiera wzór, tj: ramki, kolory, formaty, rozwijane listy, po prostu wszystko co zawiera dana komórka, ale jak już wspomniałem nie może to być formuła bo w komórkach które zostaną skopiowane w inne miejsce będą wprowadzane dane.

    Dodano po 1 [minuty]:

    ma to wyglądać na takiej zasadzie jak to robię do tej pory: zaznaczam dany wzór klikam kopiuj i wklejam w odpowiednie miejsca

    Dodano po 2 [minuty]:

    Tak dla uściślenia, plik w pierwszym poście nie zawiera we wzorze żadnych formatów i tym podobne, chciałem tylko pokazać o co mi chodzi

    0
  • #7 07 Cze 2011 16:21
    JaroFon
    Poziom 23  

    kolego wielkie dzięki, właśnie o takie kopiowanie mi chodziło. Jednak zadam kolejne pytanie o możliwość przerobienia tego makra, mianowicie chodzi mi o to czy była by taka możliwość aby zostało skopiowane (ogólnie to wklejone) wszystko ale żeby aktualne wpisy pozostały. Dokładnie chodzi o to że jeśli jest powiedzmy połowa miesiąca i okaże się że dany pracownik będzie miał zmieniony system na inny np. z A na B to żeby po zmianie wpisu z A na B został skopiowany odpowiedni wzór systemu ale żeby pozostały dotychczasowe wpisy (dniówki).

    Dodano po 6 [minuty]:

    no i jeszcze jedno pytanie jak mogę samemu przerobić to makro aby dostosować je do swoich potrzeb. Tabele którą podałem jest ogólnie wzorem i z tego co widzę nie ma mowy o jej zmianie, a co jeśli wzór systemu się zmieni na większą ilość wzorów i możliwość dodania większej ilości pracowników? Na dzień dzisiejszy prowadzę 340 pracowników

    Dodano po 9 [minuty]:

    samą opcje dodania pracowników to już wiem ale nie wiem jak w makro dodać więcej wzorów

    0
  • Pomocny post
    #8 07 Cze 2011 16:28
    adamas_nt
    Moderator Programowanie

    Podmień linijkę wklejania. Podaję cały blok copy-paste dla porównania

    Code:
        kolRight = Range("d2").End(xlToRight).Column
    
        Range(Cells(wrsLeftTop, 4), Cells(wrsLeftTop + 1, kolRight)).Copy
        Range(Target.Address).Offset(0, 1).Select
        Selection.PasteSpecial Paste:=xlPasteFormats
        Application.CutCopyMode = False
        Target.Offset(2, 0).Select
    Makro jest bardzo łatwe do przerobienia. Operuje wyłącznie na kolumnach C i D, przeanalizuj sobie. Pierwszy wiersz tabelki ze wzorami makro znajduje po tekście, szerokość po nagłówku tabeli wynikowej. Opisałem to w komentarzach makra. Ilość wzorów (długość tabelki) nie gra roli.

    Jeśli nie zmieniasz kolumn a tylko dopisujesz wiersze to jedyna korekta dotyczy obszaru arkusza, który spełnia warunek (pierwsza linijka)

    0
  • #10 07 Cze 2011 16:39
    adamas_nt
    Moderator Programowanie

    A, jeszcze jedna dość istotna sprawa: Usunięcie symbolu grupy usunie formatowanie włącznie z wartościami. Jeśli chciałbyś z tego zrezygnować, usuń linijkę rozpoczynającą się od ElseIf i tę następną...

    0
  • #11 07 Cze 2011 16:49
    JaroFon
    Poziom 23  

    Kolego wielkie dzięki, o to właśnie mi chodziło. Ale skoro jestem już w temacie to zadam jeszcze jedno pytanie o pewną możliwość. Cały arkusz ma dodany kalendarz na podstawie którego jest otwierany nowy miesiąc. Czy była by możliwość dodać do makra opcję automatycznego tworzenia wzoru systemu? Chodzi o to żeby zapodać np. podstawowy wzór na podstawie którego będzie tworzony automatycznie po kliknięciu na odpowiedni miesiąc odpowiedniego wzoru systemu, dokładnie to system jest 5/1, czyli 5 dni roboczych i 1 dzień wolny i chciałbym żeby po zapodaniu kolejnego miesiąca wzór odpowiednio utworzył kontynuacje wzoru z poprzedniego miesiąca itd. Jednak musiała by być możliwość zmiany podstawowego wzoru systemu z np. 5/1 na 6/2 i inne podobne (we wzorze szare pola to wolne dni)

    Dodano po 10 [minuty]:

    troszkę się zagalopowałem, może zrobię nowy arkusz na podstawie którego pokaże o co dokładnie mi chodzi

    0
  • #12 07 Cze 2011 16:49
    adamas_nt
    Moderator Programowanie

    Tak, jest do zrobienia, kwestia czasu. Opisz dokładniej jak chciałbyś to realizować.
    Nie analizowałem z czego się biorą te wzorce, jak to się ma do kalendarza, co ze świętami, etc...

    0
  • #13 07 Cze 2011 17:56
    JaroFon
    Poziom 23  

    Poniżej jest plik w który jest wszystko co chcę osiągnąć. Plik nie zawiera makra. Dokładnie chodzi mi o to żeby zrobić to co poprzednio ale dodać opcję automatycznego aktualizowania systemu. W zakładce "Wzór" są dwa wzory, pierwszy to ten stały na podstawie którego będzie aktualizowany wzór następny z którego będą pobierane dane do zakładki "Szychtownica". I tak jeśli zmienię w zakładce kalendarz miesiąc na lipiec to względem wzoru stałego system powinien tak się przesunąć aby był kontynuacją z miesiąca czerwca w tym wypadku wzoru stałego. Więc jeśli system A kończy się 30 czerwca czwartym dniem roboczym (biorąc pod uwagę wzór systemu stałego czyli w tym wypadku 5/1), to kolejny miesiąc 1 lipiec dla systemu A rozpocznie się od piątego dnia roboczego a kolejny 2 lipiec to będzie już dzień wolny itd.

    0
  • #15 08 Cze 2011 14:52
    adamas_nt
    Moderator Programowanie

    Dla pewności.
    1. Dzień wolny to: dla Brygady A czwartek, B piątek itd. Czyli zmieniając miesiąc/rok w arkuszu "kalendarz", w tabeli "Wzór aktualny" "zszarzeć" mają komórki odpowiadające dniom wolnym wg. szablonu (górna tabelka)?
    2. Co z dniami ustawowo wolnymi?

    0
  • #17 09 Cze 2011 22:01
    adamas_nt
    Moderator Programowanie

    Usiadłem (wreszcie) nad tym i tak sobie myślę:

    Jeśli pierwszy dzień miesiąca wypada w środę, to w systemie 5/1 dzień wolny ma brygada, która pracowała w ostatni czwartek poprzedniego miesiąca. Nie ma tu stałych, więc po czym w takim razie biedny Excel ma się orientować? Systemu 6/2 nawet nie próbuję analizować :)

    Należałoby mu jakoś (InputBox, wartość w komórce, a może formularz) podpowiedzieć:
    Kto pracował w ostatnim dniu poprzedniego miesiąca, w ostatnią Niedzielę, lub coś podobnego. Dalej Select Case i kolorowanie komórek w pętli. Chyba, że masz inną koncepcję...

    0
  • #18 10 Cze 2011 07:25
    JaroFon
    Poziom 23  

    tak myślałem że to będzie zbyt skomplikowane. Tu chodzi jedynie o odpowiednie automatyczne przesuniecie pul systemu. Jeśli to jest tak skomplikowane darujmy se, wystarczy mi to co juz zrobiłeś a wzór systemu będę se zmieniał jak do tej pory czyli ręcznie.

    0
  • #19 15 Cze 2011 21:08
    JaroFon
    Poziom 23  

    Witam ponownie. Chciałbym prze edytować trochę kod ale niestety nie wiem jak to zrobić. Chodzi mi dokładnie o tą część kodu:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Kiedy dodam pola z nowo przyjętym pracownikiem to jest wszystko ok ale w tej części kodu muszę go prze edytować i dodać w nim dodane pola np. z c33 na c35. Czy można to zrobić w taki sposób aby nie trzeba było edytować kodu i jak dodam dodatkowe pola w arkuszu to kod automatycznie również je doda?

    Dodano po 2 [minuty]:

    Również aby działało to w drugą stronę kiedy pracownik zostanie zwolniony i usunę niepotrzebne pola

    0
  • Pomocny post
    #20 15 Cze 2011 21:58
    adamas_nt
    Moderator Programowanie

    Najprościej: Nazwij zakres (nadaj nazwę Np "zakres") w arkuszu. Wstawienie lub usunięcie wiersza/komórek wewnątrz zdefiniowanego zakresu spowoduje automatyczną korektę jego rozmiaru. Wtedy

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    1
  • #21 15 Cze 2011 22:29
    JaroFon
    Poziom 23  

    hmm coś niecoś mi wyszło ale nie do końca. Chyba źle to zrobiłem bo zaznaczyłem pewną część pól i nazwałem to jako 'zakres' i dodałem wpis do kodu który mi dałeś i działa wyśmienicie, jednak jak dodam dodatkowe pola to tych dodanych już nie uwzględnia, w jaki sposób mam nazwać ten zakres?

    Dodano po 3 [minuty]:

    ok chyba już mam, zrobiłem jeszcze raz powoli i dokładnie i działa

    Dodano po 16 [minuty]:

    Mam kolejne pytanie związane z wpisywaniem w oknie grupy. Czy można zrobić coś takiego że bez względu na to czy na klawiaturze mam włączony Caps Lock czy też mam wciśnięty Shift w wybranych polach zawsze wyskoczy duża litera?

    0
  • #22 15 Cze 2011 22:45
    adamas_nt
    Moderator Programowanie

    Jeśli chodzi o procedurę zdarzeniową, to istnieje pewien haczyk. Instrukcja UCase powoduje zmianę. Należałoby najpierw sprawdzić kod znaku i jeśli jest to litera mała, wyłączyć zdarzenia i dokonać zmiany, zastosować licznik lub jeszcze inne rozwiązanie. W innym przypadku Excel zawiesi się nie mogąc skończyć procedury. Zmiana uruchomi makro, które dokona zmiany, która uruchomi UCase, które dokona zmiany, która uruchomi makro... ∞

    Łatwiej jest zaprogramować zdarzenie "odporne" na wielkość liter (tak zdaje się mamy).

    Może zastosuj poprawność danych z listy...

    0
  • #23 15 Cze 2011 22:58
    JaroFon
    Poziom 23  

    No tak tylko jak to zaprogramować? Chociaż to wcale nie jest mi tak bardzo potrzebne, to byłby tylko taki dodatkowy bajer. Jednak jeszcze zadam jedno pytanie i na dziś już koniec. Chodzi o samą opcję kopiowania. Jest wszystko wspaniale. Dodałem se przycisk i zarejestrowałem se do niego makro, dokładnie kasowanie wszystkich wpisanych grup, po prostu po kliknięciu na przycisk wszystkie wpisane grupy usuwają się jednak teraz chciałbym aby po kliknięciu na ten przycisk zostały również usunięte wszystkie skopiowane wzory systemów jak również wszystkie wpisy jakie zostały dokonane, po prostu taki reset czyszczący wszystko do kolejnego miesiąca, jak to zrobić?

    0
  • Pomocny post
    #24 15 Cze 2011 23:00
    adamas_nt
    Moderator Programowanie

    Poszerz zakres i zastosuj clear zamiast clearcontents.

    0
  • #25 15 Cze 2011 23:23
    JaroFon
    Poziom 23  

    Nie rozumiem :( mogę prosić tak bardziej łopatologicznie?

    Dodano po 5 [minuty]:

    Ach już rozumiem. Po prostu zmienić zarejestrowane makro tak żeby kasowało wszystko

    Dodano po 13 [minuty]:

    To zarejestrowane makro nie do końca działa poprawnie bo niestety nie uwzględnia dodanych pul i jak kliknę na przycisk to nie kasuje mi tych dodanych

    0
  • #26 16 Cze 2011 21:19
    adamas_nt
    Moderator Programowanie

    Zdaje się, że doszedłeś do punktu, w którym trzeba przeprojektować co nieco.

    Wrzuć plik z ostatnimi zmianami. Trudno się zorientować wg opisu...

    0
  • #27 16 Cze 2011 21:23
    JaroFon
    Poziom 23  

    Witam ponownie. Wrócę do tematu kopiowania ponieważ znalazłem mały błąd. Cała operacja kopiowania działa bez zarzutu ale jednak nie kopiuje wszystkiego. Kopiuje kolory, ramki, czcionki, formaty, jednak nie kopiuje rozwijanych list. We wzorze systemy każda komórka zawiera rozwijaną listę ale ich nie kopiuje

    0
  • #29 16 Cze 2011 22:36
    adamas_nt
    Moderator Programowanie

    Czyli kopiujesz nie tylko formaty. Podmień kod arkusza na

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Wstawianie pozycji w tabeli można zrealizować podobnie: Zaznaczasz i wstawiasz wiersze na końcu, copy-paste, wyczyszczenie wartości, uporządkowanie liczby porządkowej. Można wykonać ręcznie lub pokombinować z makrem.

    0
  • #30 16 Cze 2011 22:52
    JaroFon
    Poziom 23  

    Dzięki bardzo. Myślę że część z kopiowaniem będzie już rozwiązana. Jednak chcę rozwinąć temat związany właśnie z tym arkuszem i popytać o inne opcje już nie związane z kopiowaniem. Jeśli mogę to zrobię to tutaj a jeśli nie to założę nowy temat.
    Chcę zapytać jak mogę zrobić żeby w najprostszy sposób na przykładzie wzoru systemu "-" zrobić tak aby wszystkie wpisy w polach białych były czarne a w polach szarych czerwone ale nie do końca, mówię o wpisach cyfrowych z listy rozwijanej a reszt wpisów z listy rozwijanej (oprócz cyfr) we wszystkich polach pojawiały się na niebiesko oprócz wpisu "B" który zawsze ma się wyświetlać na czerwono, oczywiście potem musi taki wzór prawidłowo kopiować się. Do tej pory robiłem to formatami i każde okno zawierało parę takich formatów

    0
  Szukaj w 5mln produktów