Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 74057 Skopiuj do schowka Aktualna data w komórce
Autor Wiadomość
Bonhartleo 
Forumowicz



Posty: 22
Wysłany: 27-01-2023, 11:17   Aktualna data w komórce

Witam, czy istnieje proste vba które pozwoli aby po uzupełnieniu/zmianie wartości konkretnej komórki w komórce obok wykonywał się funkcja teraz. Vba miałoby regulować brak odświeżania funkcji teraz dla pozostałych komórek które nie zostały aktualnie zmienione.

dla przykładu

parametr a
parametr b
parametr c
parametr d
parametr e

po zmianie parametru a ma się zmienić data w komórce obok, natomiast dla pozostałych parametrów bez zmiany funkcja teraz ma się nie wykonać.

Mam nadzieję że na tym przykładzie udało mi się wyjaśnić o co dokładnie chodzi.

Pozdrawiam
Sebastian
_________________
Graj muzyko!!!
ID posta: 424691 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 3049 razy
Posty: 9086
Wysłany: 27-01-2023, 11:55   

No, nie do końca wiadomo. Powinien być załącznik.
Funkcja Excela TERAZ() wykonuje się przy każdym przeliczeniu arkusza, funkcja Now w VBA wykonuje się wtedy, kiedy zostanie wywołana.
Zatem jest to właściwy kierunek.
Natomiast nie jest jasne, co dokładnie miałoby wyzwalać tę funkcję Now.
Po pierwsze czy te parametry będą zmieniane ręcznie, czy poprzez jakieś funkcje?
Jeśli ręcznie, to czy chodzi o istotną zmianę wartości, czy o samą edycję. Standardowo zdarzenie Change w VBA reaguje na edycję, a nie na faktyczną zmianę.
Jeśli ma być testowana zmiana, potrzebny jest dodatkowy kod.
Standardowo jest tak, że wystarczy otworzyć komórkę do edycji, potem nacisnąć Enter i to już jest traktowane, że zaszło zdarzenie Change, chociaż wartość komórki może być nadal taka sama.
ID posta: 424696 Skopiuj do schowka
 
 
zorroz
Exceloholic


Pomógł: 17 razy
Posty: 221
Wysłany: 27-01-2023, 11:55   

W kodzie arkusza zamieść:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2", Range("A" & Rows.Count).End(xlUp))) Is Nothing Then
       Cells(Target.Row, 2) = Now()
    End If
End Sub


działa od komórki "A2"
ID posta: 424697 Skopiuj do schowka
 
 
Bonhartleo 
Forumowicz



Posty: 22
Wysłany: 27-01-2023, 12:51   

Witam, dzięki dokładnie o to chodziło
_________________
Graj muzyko!!!
ID posta: 424699 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 3049 razy
Posty: 9086
Wysłany: 27-01-2023, 12:53   

Inny sposób to funkcja UDF. Ma ona swoje wady i zalety w stosunku do zdarzenia Change.
Najważniejsze różnice:
Funkcja będzie reagować zarówno na zmiany bezpośrednio w komórce, jak i na zmiany wywołane przeliczeniem formuły, Change reaguje tylko na bezpośrednie zmiany.
Istnieją polecenia takie jak w VBA Application.CalculateFull, czy kombinacja klawiszy Ctrl+Alt+F9, które przeliczają wszystkie funkcje UDF. Po ich użyciu nasza funkcja też się przeliczy, natomiast zdarzenia Change nie można wywołać w ten sposób.
Treść funkcji jest taka:
Kod:
Function Zmiana(zakr As Range) As Date
   Zmiana = Now
End Function
Przykład użycia w załączniku.

Funkcja_zmiana.xlsm
Pobierz Plik ściągnięto 12 raz(y) 14.5 KB

ID posta: 424700 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe