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.

MAKRO - Jak zmodyfikowac proste makro tak by działało w nowych arkuszach?

Vallhalen 11 Lip 2013 13:12 1584 9
  • #1 11 Lip 2013 13:12
    Vallhalen
    Poziom 9  

    Witam!
    posiadam taki kod:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Rzecz w tym, że chciałbym aby te makro wykonywało się w każdym nowym arkuszu który utworzę w ramach skoroszytu (dokumentu).

    Dla ułatwienia podam że w polu J2 które tu przywołuję znajduje się data z "dzisiaj" z której korzystam codziennie i codziennie tytułuję arkusz według daty dlatego chciałbym chociaż to zautomatyzować :)

    Dziękuję za pomoc!

    0 9
  • Pomocny post
    #2 11 Lip 2013 13:23
    PRL
    Poziom 34  

    ThisWorkbook:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #3 11 Lip 2013 14:12
    Vallhalen
    Poziom 9  

    Dziękuję ! do pełni szczęścia brakuje mi jeszcze tylko jednej małej rzeczy jak wspominałem w polu J2 przechowuję datę wywołaną funkcją =DZIŚ(), kiedy podaję to pole w skrypcie to makro wypluwa błąd 1004 runtime error. Czy można to jakoś rozwiązać? Przekonwertować datę z =Dzisiaj () na text żeby podac ten tekst w polu J2 ?

    0
  • #4 11 Lip 2013 14:49
    PRL
    Poziom 34  

    Cytat:
    do pełni szczęścia brakuje mi jeszcze tylko jednej małej rzeczy jak wspominałem w polu J2 przechowuję datę wywołaną funkcją =DZIŚ(), kiedy podaję to pole w skrypcie to makro wypluwa błąd 1004 runtime error. Czy można to jakoś rozwiązać? Przekonwertować datę z =Dzisiaj () na text żeby podac ten tekst w polu J2 ?


    Jaki jest komunikat błędu?

    W wersji 2007 działa poprawnie.
    Poza tym, nie rozumiem czegoś. Procedura ta będzie uruchamiana w momencie ręcznej zmiany w J2, a Ty mówisz, że w tej komórce masz formułę. Jak to jest?

    0
  • #5 11 Lip 2013 15:18
    Vallhalen
    Poziom 9  

    No właśnie ! Gdy wpiszę tam cokolwiek ręcznie to oczywiście działa i teraz pojawia się moje pytanie co zrobić aby pobierało datę którą w jakiejś komórce uzyskuję za pomocą =DZIŚ().

    Prościej rzecz biorąc codziennie tworzę nową kartę w tym samym xls z nową datą i chciałem to zautomatyzować zamiast ręcznie wpisywać datę (inni pracownicy w firmie mają problem nawet z prostą edycją formułki wyglądającej o tak:

    Code:
    ='10-07-13'!C25+'11-07-13'!C24


    bo przecież coś się źle kliknie i całe obliczenia w xls szlag trafia dlatego chciałem podawać datę z danego dnia automatycznie :)

    0
  • #6 11 Lip 2013 15:26
    PRL
    Poziom 34  

    Proponuję dodać do menu przycisk, który uruchamia makro, a w nim:
    - dodać nowy arkusz,
    - zmienić jego nazwę,
    - i co tylko wymyślisz.

    Myślę, że każda pani Jadzia nauczy się klikać w przycisk w menu...

    0
  • Pomocny post
    #7 11 Lip 2013 18:42
    cbrman
    Poziom 27  

    Proponuję poniższy kod dla zdarzenia WorkbookOpen.
    Kod sprawdza czy ostatni arkusz w skoroszycie ma nazwę równą dzisiejszej dacie, jeśli nie to tworzy na końcu skoroszytu nowy arkusz z nazwą taka jak dzisiejsza data.

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #8 12 Lip 2013 11:03
    Vallhalen
    Poziom 9  

    @cbrman działa świetnie!
    Po lekkiej modyfikacji nawet "robi się samo" po otwarciu arkusza i kopiuje zawartość poprzedniej karty :)

    Do pełni szczęścia brakuje mi tylko jednej rzeczy obecny kod wygląda tak:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Stoję przed ostatnim w zasadzie problemem mianowicie w jednym z pól mam taką formułkę:

    Code:
    ='10-07-13'!C25+'11-07-13'!C24


    która jak widać opiera się na pobieraniu wartości z pola z poprzedniego dnia+wartość z pola z obecnego dnia.
    czy mogę jakimś sposobem zmodyfikować tą formułe (lub powyższe makro) tak aby sama wiedziała że ma korzystać z zadanych pól to jest z pola C25 z poprzedniego dnia + C24 z obecnego dnia (bez wyklikiwania tego ręcznie codziennie) i wynik tego działania wstawiać w konkretną komórkę ?


    Czy (jako drobnostkę) da się zmodyfikować sposób nazywania formularzy z takiej formy:
    Code:
    2013-07-12
    na
    Code:
    12-07-13
    jeśli nie jest to możliwe to nie problem pytam pro-forma i dziękuję wszystkim za wskazówki.

    0
  • Pomocny post
    #9 12 Lip 2013 11:39
    cbrman
    Poziom 27  

    Vallhalen napisał:
    Stoję przed ostatnim w zasadzie problemem mianowicie w jednym z pól mam taką formułkę:

    Code:
    ='10-07-13'!C25+'11-07-13'!C24


    która jak widać opiera się na pobieraniu wartości z pola z poprzedniego dnia+wartość z pola z obecnego dnia.
    czy mogę jakimś sposobem zmodyfikować tą formułe (lub powyższe makro) tak aby sama wiedziała że ma korzystać z zadanych pól to jest z pola C25 z poprzedniego dnia + C24 z obecnego dnia (bez wyklikiwania tego ręcznie codziennie) i wynik tego działania wstawiać w konkretną komórkę ?


    Np. dla komórki B1
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Vallhalen napisał:
    Czy (jako drobnostkę) da się zmodyfikować sposób nazywania formularzy z takiej formy:
    Code:
    2013-07-12
    na
    Code:
    12-07-13


    Kod: vb
    Zaloguj się, aby zobaczyć kod

    EDIT:
    Oczywiście w takim wypadku musisz także zmienić warunek sprawdzania nazwy nadanym arkuszom, aby sprawdzany był nowy format daty.

    0
  • #10 12 Lip 2013 12:43
    Vallhalen
    Poziom 9  

    Cóż mogę powiedzieć! Za sprawą takiego kodu

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Działa wszystko to czego oczekiwałem a nawet więcej niż się spodziewałem zakładając ten wątek :) Dziękuję i uznaję za rozwiązany.

    0