Discussion:
rejestracja zmiany wartości w komórce
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Dombrek
2008-02-01 16:09:32 UTC
Permalink
Witam!
Czy mógłby mi ktoś podpowiedzieć jak powinno wyglądać makro rejestrujące
zmianę wartości w komórce?
W komórce A1 zmienia się wartość i chcę, żeby w komórce B1, B2, B3...
zapisywały się kolejno wartości, które wyświetliły się w A1.
Z góry dzięki za pomoc
Pozdrawiam
Dombrek
Jacek
2008-02-01 16:16:32 UTC
Permalink
Post by Dombrek
Witam!
Czy mógłby mi ktoś podpowiedzieć jak powinno wyglądać makro rejestrujące
zmianę wartości w komórce?
W komórce A1 zmienia się wartość i chcę, żeby w komórce B1, B2, B3...
zapisywały się kolejno wartości, które wyświetliły się w A1.
Z góry dzięki za pomoc
Pozdrawiam
Dombrek
Cos mi sie nie zgadza. Chcesz rejestrowac zmiany wprowadzane do komorki
przezuzytkownika, czy zmiany , ktore moga nastepowac w tej komorce np.
przez dzialanie vba.
Sprecyzuj.
Piotr Lipski
2008-02-01 16:28:06 UTC
Permalink
Post by Jacek
Post by Dombrek
Witam!
Czy mógłby mi ktoś podpowiedzieć jak powinno wyglądać makro rejestrujące
zmianę wartości w komórce?
W komórce A1 zmienia się wartość i chcę, żeby w komórce B1, B2, B3...
zapisywały się kolejno wartości, które wyświetliły się w A1.
Z góry dzięki za pomoc
Pozdrawiam
Dombrek
Cos mi sie nie zgadza. Chcesz rejestrowac zmiany wprowadzane do komorki
przezuzytkownika, czy zmiany , ktore moga nastepowac w tej komorce np.
przez dzialanie vba.
Sprecyzuj.
A co za roznica, w zdarzeniu Worksheet_Change sprawdzasz czy
Target.Address jest "$A$1" i jezeli tak to odczytujesz nowa wartosc i
wrzucasz ja do pierwszej pustej komorki w kolumnie B. Zdarzenie zachodzi
zarowno przy edycji recznej jak i zmianie wartosci z VBA...
--
PL
Jacek
2008-02-01 16:35:08 UTC
Permalink
Post by Piotr Lipski
Post by Jacek
Post by Dombrek
Witam!
Czy mógłby mi ktoś podpowiedzieć jak powinno wyglądać makro rejestrujące
zmianę wartości w komórce?
W komórce A1 zmienia się wartość i chcę, żeby w komórce B1, B2, B3...
zapisywały się kolejno wartości, które wyświetliły się w A1.
Z góry dzięki za pomoc
Pozdrawiam
Dombrek
Cos mi sie nie zgadza. Chcesz rejestrowac zmiany wprowadzane do komorki
przezuzytkownika, czy zmiany , ktore moga nastepowac w tej komorce np.
przez dzialanie vba.
Sprecyzuj.
A co za roznica, w zdarzeniu Worksheet_Change sprawdzasz czy
Target.Address jest "$A$1" i jezeli tak to odczytujesz nowa wartosc i
wrzucasz ja do pierwszej pustej komorki w kolumnie B. Zdarzenie zachodzi
zarowno przy edycji recznej jak i zmianie wartosci z VBA...
No wlasnie zapomnialem, jak nazywa sie zdarzenie AfterUpdate dla Excela:)
Dombrek
2008-02-01 22:20:02 UTC
Permalink
Post by Piotr Lipski
A co za roznica, w zdarzeniu Worksheet_Change sprawdzasz czy
Target.Address jest "$A$1" i jezeli tak to odczytujesz nowa wartosc i
wrzucasz ja do pierwszej pustej komorki w kolumnie B. Zdarzenie zachodzi
zarowno przy edycji recznej jak i zmianie wartosci z VBA...
A czy byłoby nietaktem poprosić o kod tego rozwiązania? ;)
Dombrek
Jacek
2008-02-02 06:36:01 UTC
Permalink
Private Sub Worksheet_Change(ByVal Target As Range)
a1 = Cells(1, 1)
x = 1
If Target.Address = "$A$1" Then
While Cells(x, 2) <> ""
x = x + 1
Wend
Cells(x, 2) = a1
End If
Dombrek
2008-02-02 21:32:23 UTC
Permalink
O! Dzieki, ale jakos tego nie moge uruchomic. W Komórce A1 chcialem losowac
liczby a w kolumnie B maja sie te wyniki spisywac.
Dombrek
Post by Jacek
Private Sub Worksheet_Change(ByVal Target As Range)
a1 = Cells(1, 1)
x = 1
If Target.Address = "$A$1" Then
While Cells(x, 2) <> ""
x = x + 1
Wend
Cells(x, 2) = a1
End If
Jacek
2008-02-03 03:56:34 UTC
Permalink
Tego sie nie uruchamia. To sie samu uruchamia po zmianie zawartosci w A1.
Jakie losowanie?
Jezeli chcesz wypelnic kolumne jakimis losowymi liczbami, to do tego sluzy
Random. Nie trzeba z reki wklepywac.
Dombrek
2008-02-03 11:06:03 UTC
Permalink
Post by Jacek
Tego sie nie uruchamia. To sie samu uruchamia po zmianie zawartosci w A1.
Jakie losowanie?
Jezeli chcesz wypelnic kolumne jakimis losowymi liczbami, to do tego sluzy
Random. Nie trzeba z reki wklepywac.
Chodzi o to, ze losuje sobie w innym arkuszu rózne rzeczy i wynik tych
losowan chce wpisywac automatycznie do A1 (tu zwykle odwolanie), a nastepnie
jak Excel wykryje, ze A1 sie zmienilo, to nowa wartosc ma wpisywac w kolejne
wiersze kolumny B (czyli tyle ile nowych wartosci, tyle wierszy). Z tego co
wiem, samo Change nie reaguje na zmiany przez F9, reaguje tylko na zmiane
reczna komórki i Enter.
Dombrek
Jacek
2008-02-03 13:24:01 UTC
Permalink
Cos kombinujesz kolego.
Skoro na Arkusz2 robisz jakies magie, to z tamtad uzupelniaj kolume B w
Arkusz1, a nie jakies A1, a potem Bn.
Moze napisz dokladniej co robisz i co chcesz osiagnac, to bedzie nam
latwiej Tobie pomoc.
Bo na pytanie zawarte w pierwszym poscie napisalem Ci kod.
Dombrek
2008-02-03 20:49:42 UTC
Permalink
Post by Jacek
Cos kombinujesz kolego.
Skoro na Arkusz2 robisz jakies magie, to z tamtad uzupelniaj kolume B w
Arkusz1, a nie jakies A1, a potem Bn.
Moze napisz dokladniej co robisz i co chcesz osiagnac, to bedzie nam
latwiej Tobie pomoc.
Bo na pytanie zawarte w pierwszym poscie napisalem Ci kod.
OK, zamieszalem.
Jeszcze raz opisze, co chce osiagnac:
w komórce $a$1 losuje sobie rózne wartosci (uzywam formuly =los() ).
I teraz chce, zeby w kolumnie B (B1, B2, B3...) kolejno wypisywaly sie te
wartosci, które sie wylosowaly w A1. Czyli tyle razy ile nacisne F9, tyle
wierszy w kolumnie B ma sie wypelnic, bo tyle nowych/zmienionych wartosci
otrzymuje.
Niestety zaproponowany przez Ciebie kod mi jakos w ogóle nic nie wypisuje
(ale tez nie wyskakuje zaden blad, a makra sa oczywiscie wlaczone) -
niezaleznie czy wpisuje recznie wartosc komórki A1 czy tez formula losowania
i naciskania F9.
Dombrek
Dombrek
2008-02-03 20:53:08 UTC
Permalink
Zadziałało!! Eureka!!
Choć pozostał jeden problem. Działa jak wpisuję ręcznie (wprowadzam wartość
i naciskam Enter). Niestety nie działa jak losuję wartość (wpisana formuła
los() i F9).
Dombrek
Dombrek
2008-02-03 21:01:14 UTC
Permalink
Jest!
Dzięki, Jacek, to co napisałeś to działa. A problem z odświeżaniem na F9
rozwiazałem tak (dla potomnych):
napisałem nowe makro, które klika w komórce A1 przycisk F2 (wchodzi do
edycji pola) i naciska Enter po czym znów wraca kursorem na A1. Puściłem w
pętli i zadziałało!!
Jeszcze raz dzięki
Dombrek
Piotr Lipski
2008-02-04 09:29:51 UTC
Permalink
Post by Jacek
Private Sub Worksheet_Change(ByVal Target As Range)
a1 = Cells(1, 1)
x = 1
If Target.Address = "$A$1" Then
While Cells(x, 2) <> ""
x = x + 1
Wend
Cells(x, 2) = a1
End If
Poprawnie, ale nieoptymalnie. Lepiej byloby:

If Target.Address = "$A$1" Then
Range("B1").End(xlDown).Offset(1,0).Value = Target.Value
End If

Twoje rozwiazanie dla stu rekordow bedzie dzialac szybko, dla stu
tysiecy juz niekoniecznie.
--
PL, bez ogonkow chwilowo
Jacek
2008-02-04 09:40:44 UTC
Permalink
Zgada sie:)
Jacek
2008-02-04 09:50:42 UTC
Permalink
Ale to daje blad 1004:
Applocation-defined or object-defined error...

Loading...