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

Excel- pokazywanie daty i czasu ostatniej zmiany w arkuszu

24 Mar 2013 15:56 7449 8
  • Poziom 23  
    W jaki sposób mogę zapisywać w arkuszu w określonej komórce czas i datę ostatniej zmiany? Mam arkusz w którym chcę aby w jednej komórce pokazywało mi ogólnie dla całego arkusza (dla określonego zakresu) datę i czas ostatniej zmiany, jak również kilka komórek które chcę sprawdzać z osobna, czyli dajmy na to że jeśli w komórce 'A1' zostanie wprowadzona zmiana to w komórce 'B1' zostanie zapisana data i czas tej zmiany. Mój plik jest umieszczony na serwerze a z pliku korzysta spora ilość użytkowników i chcę wiedzieć kiedy były wprowadzone zmiany. W jaki sposób mogę coś takiego osiągnąć? Oczywiście funkcja musi działać tak żeby nie powodowało zmiany daty i czasu po uruchomieniu pliku czy w jakichkolwiek inny sytuacjach jeśli nic nie zostało zmieniona w danym arkuszu
  • Moderator Programowanie
    Zdaje się, że zrealizujesz to "zwykłą" procedurą zdarzeniową (przy zmianie) arkusza. Ale to zależy jaki kod już w nim "siedzi". Trzeba by się przyjrzeć...
  • Poziom 23  
    Sam arkusz w sumie nie posiada żadnego kodu, jest tam tylko coś takiego:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    ...ogólnie to plik posiada 31 arkuszy (31 dni) a każdy arkusz posiada 6 tabel. Potrzebuję utworzyć pokazywanie daty aktualizacji po dwie dla każdej tabeli- jedna to czas i data wprowadzonych zmian przez pracownika, a druga wprowadzona przez dyspozytora (przy okazji fajnie by było żeby przy tej dacie i czasie pokazywało również z jakiego komputera (login użytkownika, oczywiście jeśli jest taka możliwość) została wprowadzona zmiana. Ja chciałbym żeby chociaż pokazać mi przykład jak to zrobić dla jednej aktualizacji i dajmy na to że zakres sprawdzania zmian to: 'B8:AK8,A16:AK16' i ten jeden zakres byłby taki sam dla 31 arkuszy (arkusze mają nazwy od 1 do 31) ale dla każdego z osobna czyli 'ActiveSheet' a komórka pokazywania czasu i daty (ewentualnie również użytkownika) to 'F4' również taka sama dla 31 arkuszy. Ogólnie to wszystkie 31 arkuszy są identycznie takie same z tym wyjątkiem że każdy arkusz jest przeznaczony dla innego dnia. To jest oczywiście przykład tylko dla jednego zakresu 31 arkuszy a docelowo chciałbym sprawdzanie 12 zakresów w jednym arkuszu takich samych dla 31 arkuszy
  • Pomocny post
    Moderator Programowanie
    To zdaje się, że najlepiej będzie umieścić kod w ThisWorkbook. Np
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Wartości wyświetlane w przykładzie przez MsgBox przypisz w "z góry upatrzone" komórki arkusza, najlepiej poza zakresem z argumentu. Np Sh.Range("B1") = Date

    Edit: A, jeszcze wyłączenie tych, w których nie ma być rejestrowania zmian. Tu bez dwóch:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    Dzięki wielkie. O coś takiego właśnie mi chodziło. Ale mam dwa pytania. Teraz kod wygląda jak poniżej, ten kod śledzi zmiany wprowadzane przez pracownika dla 31 arkuszy, czy można go zminimalizować czy ma zostać tak jak jest?

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    No i pojawił się problem przy czyszczeniu arkuszy. Mam jeden przycisk którym z głównego arkusza 'Menu' czyszczę wszystkie arkusze na raz. Przed wstawieniem powyższego kodu było wszystko OK. Teraz przy próbie wyczyszczenia arkuszy wyskakuje mi błąd jak na screenie:

    Excel- pokazywanie daty i czasu ostatniej zmiany w arkuszu

    ...no i przy otwieraniu pliku też wyskakuje błąd:

    Excel- pokazywanie daty i czasu ostatniej zmiany w arkuszu
  • Pomocny post
    Moderator Programowanie
    Musisz wyłączyć Eventy w tych makrach. Trochę dziwnie to brzmi (wyłączenie zdarzeń w procedurze zdarzeniowej), ale czasem nie ma innego wyjścia. Pamiętaj włączyć na końcu, podobnie jak z odświeżaniem - Application.Enableevents=false/true
  • Poziom 23  
    Dzięki, teraz działa bez błędów :)
  • Poziom 2  
    Witam, stary temat ale może ktoś przyjdzie z pomocą :)

    Mianowicie, mam podobny problem jak osoba zakładająca ten temat.

    Rozwiązanie tutaj przedstawione przetestowałem i działa, jednak osobiście potrzebuje wprowadzić pewne zmiany i niestety nie mam pojęcia jak.

    Chodzi o to, by data zmiany np. komórki A1 pokazywała się w B1, A2 w B2, A3 w B3 i analogicznie cała kolumna w dół.
    Druga sprawa, jak oznaczyć by procedura ta działała tylko w Arkusz1. Gdy wpisuje kod w Arkusz1 (Code) nie działa, a w ThisWorkbook(Code) działa w każdym arkuszu.

    Proszę o wyrozumiałość, moja wiedza z VBA jest znikoma.
  • Poziom 9  
    Excel- pokazywanie daty i czasu ostatniej zmiany w arkuszu Witam, mam troszkę inny problem, z którym nie mogę sobie poradzić - mam listę, w której wpisuję dane i musze mieć czas kiedy wpisalem (edytowałem) ową komorkę - (np. R33 - wpis, R34 - godzina automatycznie - i tak dla calej tabeli)... Przeglądałem neta - ale nie poradziłem sobie z edycją makra - w moim przypadku... ;) W załączniku tabela...... Oczywiście z ogromną prośbą pomocy......


    - wybaczcie, ale nie potrafię wstawić pliku... ;)