WWW pro školy
Jak na Office - tutoriály, video návody











Vytvoř si párové triko

Poradna - Zaznamenání času změny hodnoty buňky přes VBA

hlavní kategorie | zpět | + odpovědět na toto téma
Zaznamenání času změny hodnoty buňky přes VBA - diskuze na toto téma
Zdravím, Potřebuji zaznamenat čas změny hodnoty buňky. Např: v buňce P59 se změní hodnota a v buňce C1 se zobrazí datum kdy byla hodnota v P59 změněna. Vzorec ve VBA mám takto: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$P$59" Then Cells(1, 3) = Now End If End Sub tento vzorec mě funguje pouze v případě, že buňku (P59) sám ručně přepíšu. Lze takto zaznamenávat v buňce (např C1) datum změny i v případě, že se hodnota v buňce mění na základě vzorce - tedy když ji nepřepisuji sám? Přesněji řečeno: hodnota v buňce P59 je výsledná cena, která vzniká na základě několika změn ve dvou záložkách sešitu a já potřebuji zaznamenat datum změny této ceny. Mockrát děkuji

elninoslov | 15.2.2018 17:11  
 
 
Buď to urobíte v metóde Calculate (viď príloha, skrytý list vo VBA) s tým, že niekde musíte odkladať predošlú hodnotu, aby nedochádzalo k odátumovaniu bunky aj keď bola kalkulácia spôsobená v liste inou zmenou. Alebo to urobíte v OnChange listu, v ktorom meníte tie hodnoty, kde budete checkovať práve manuálnu zmenu buniek s parametrami, ktoré ovplyvňujú ten súčet.
Odpověď
Tomáš | 16.2.2018 08:14  
 
 
Děkuji. Úplně nejjednodušší by pro mě bylo, kdyby datum sledovalo pouze změnu čísel v buňce výsledok. S tím, že výsledok nepřepisuji sám, ale mění se vždy jen na základě výsledku výpočtu. Do tabulky jsem doplnil několik parametrů + komentáře. Prosím o doplnění vzorce pro datum změny ceny. Mockrát díky
Odpověď
elninoslov | 16.2.2018 16:17  
 
 
Veď tak som Vám to urobil aj predtým, len ste uviedol úplne iné adresy buniek ako teraz. Nieje možné kontrolovať len jednu vzorcom vypočítavanú hodnotu v bunke. Keď sa zmení niečo, čo ovplyvní ktorýkoľvek vzorec v liste, nastane metóda Calculate. Tá neuvádza, ktorá bunka sa zmenila vzorcom. Ona iba indikuje, že nastal prepočet v liste. Preto musíte mať niekde uloženú starú hodnotu danej bunky, aby ste v tej metóde Calculate mohol porovnať či počas Calculate (opakujem, že nevieme čím bolo vyvolané) nezmenil aj výsledok vášho sledovaného vzorca. No a ak áno, potom zapíšete nový čas a opäť odložíte novú hodnotu, ako starú, pre ďalšie porovnanie. Chápeme sa ? Takže teraz to funguje ako ste chcel. ALE. Je aj iná možnosť, že nebudete sledovať výsledok vzorca, ale zmenu parametrov. Parametre meníte manuálne, nie ? Tak tu máte oba príklady.
Odpověď
Tomáš | 19.2.2018 08:12  
 
 
Myslím, že už tomu rozumím. Děkuji za ochotu:)
Odpověď