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.

VBA - Excel Wstawienie aktualnej daty jeśli np. C1=A2

02 Kwi 2014 14:29 3426 6
  • Poziom 10  
    Witam,

    mam arkusz, w którym muszę zastosować kilka makr, większość przeskoczyłem ale na dwóch się zawiesiłem i stąd mój wpis.

    1. Czy w Excel2013 da się makrem ukrywać wstążkę tak jak dało się to zrobić w Excel2007 bo coś mi zadziałać makro, które kiedyś stworzyłem, a wiem że było sprawne

    oraz 2 ważniejsze:
    Mam tabelę i w kolumnie np. E11 mam wczytane 5 cyfrowe kody. Jeśli do G2 wczytam kod, który występuje w kolumnie E11 to dwa pola obok kodu czyli do G11 makro wrzuca mi datę i ją blokuje tak by przy ponownym otwarciu jej już nie zmieniał. Pole G2 służy tak jakby tylko zo zczytywania kodu, który ma odnaleźć w tabeli.
    Czyli wykorzystuj mniej więcej coś takiego
    bla bla bla...
    Target.Offset(0, 2) = Date
    ActiveCell = ActiveCell.Value
    tylko problem jest w tym, że w danym arkuszu jest kilka tabel i kody czasami są w kolumnie E czasami F itd .
    Dlatego wymyśliłem, że dobrze by było wykorzystać funkcję np:
    =JEŻELI($G$9=E11;DZIŚ();"") i blokować arkusz makrem na uzupełnione komórki. Ale znów jest problem, bo jak ktoś się pomyli i coś źle wprowadzi to przy odblokowaniu arkusza wszystkie daty się pozmieniają.
    I znów wpadłem na pewien pomysł ale nie wiem czy wykonalny - by stworzyć makro wstawiane jako funkcję.

    Czyli w funkcji =JEŻELI($G$9=E11;wywołanie funkcja makra;"")
    Liczę na to, że jeśli to wykonalne to funkcja makra z dopiskiem blokowania wartości .value wstawi mi datę tak, że nie będzie się ona zmieniać i każdą tabelę w arkuszu obsłużę funkcją
    Przepraszam, że tak zawile ale już sporo godzin nad tym spędziłem i mi się mózg lasuje i brak pomysłów. Jeśli ktoś miałby pomysł jak to rozwiązać to śmiało proszę rzucać propozycje :-)
  • Moderator Programowanie
    Valgaar napisał:
    =JEŻELI($G$9=E11;wywołanie funkcja makra;"")
    To nie zadziała.
    Ale możesz napisać funkcję z dwoma argumentami i wywołać =Nazwa(arg1;arg2) w arkuszu, Np =JEŚLI($G$9;E11)
  • Poziom 10  
    wiem, że pewnie to głupie pytanie ale chyba gdzieś robię jakiś głupi błąd i się zakręciłem.
    Jak by wyglądało makro na następujące warunki? np. Jeżeli $G$9=E11 to wstaw w G11 aktualną datę z zablokowaną wartością?
  • Specjalista Automatyk
    A nie możesz dać warunku, że zmienia zawartość pola (z datą) jeżeli to pole jest puste?
  • Poziom 10  
    A jak byś to widział. Bo przyznam szczerze, że albo nie zrozumiałem o co chodzi albo ograniczyło mi się myślenie przez wpatrywanie się w ten arkusz i coś pomijam. może za bardzo kombinuje a najprostsze rozwiązania są najlepsze.
  • Moderator Programowanie
    Jeśli w komórce ma znajdować się funkcja, to nie wstawisz daty "na stałe" (tego nie doczytałem). Należałoby skopiować zawartość i wkleić przez 'wklej specjalnie'>wartości.

    Najprościej: w komórce zastosować arkuszowe JEŻELI, a w kodzie arkusza umieścić procedurę zdarzeniową (Np przy dezaktywacji), która powyższe wykona automatycznie.
  • Poziom 10  
    Witam ponownie. Problem udało mi się rozwiązać w trochę inny sposób, ponieważ arkusz ma działać na różnych programach libre, star ,open, excel to postanowiłem poświęcić więcej czasu formułom w ostateczności korzystać z makr. I to był dobry pomysł bo okazało się, że testy na libreoffice wykazały, że część makr krzaczy, a wszystkie formuły działają ok. Zamieszczam podglądowe rozwiązanie mojej zagadki :-)
    1. Miałem makro do obserwowania kiedy pojawia się wpis np w kolumnie A1 i w jego przypadku w kolumnie B1 wpis daty, która się nie będzie zmieniać - niestety makro choć działa pod excelem coś krzaczy na libre, a problem rozwiązałem następująco:
    =JEŻELI(A2="";"";JEŻELI(B2="";TERAZ();B2))
    Zapisuje datę wpisu w A1 i go trzyma.

    2. Problem, który opisałem powyżej czyli funkcja sprawdzająca czy numer zaczytywany czytnikiem do pola G9 jest w tabeli np w polu E11 i jeśli tak to wrzucenie daty do odpowiedniego pola i utrzymanie jej. No to było już ciekawe bez używania makra, a udało się i działa bez najmniejszych problemów
    =JEŻELI($G$9<>"";JEŻELI(LUB(K11="";ORAZ($E11<>"";$E11=$G$9));TERAZ();K11);"")
    Po drodze używam komórki pomocniczej K bo pole docelowe dla daty ma jeszcze inne funkcje i formatowania warunkowe, ale podgląd rozwiązania przedstawiłem.

    Oczywiście powyższe funkcje działają dzięki obliczeniom iteracyjnym