Discussion:
Pobieranie danych do excela i wklejanie w komorki o jedna nizej.
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Damian
2005-03-01 13:51:59 UTC
Permalink
Witam wszystkich, mam problem z pewnym zadaniem ktore mam do
zrobienia. Zaloze ze w komorce A1 jest jakas wartosc i jest ona
pobierana za pomoca utorzonej kwerendy z jakiejs bazy danych. Ale to
ze jest pobierana skad nie jest istotne, wazne jest to zeby w tej
komorce nastepowala zmiana wartosci co jest w opcjach i mozna ustawic
co minute chociazby. Mnie interesuje co trzeba zrobic, aby wartosc
pobierana z komorki A1 aktualizowala sie w komorce A2, potem zalozmy
za minute, wartosc z A1 pokazala sie w komorce A3, potem wartosc
zaktualizowana z komorki A1, znowu pokazala sie w komorce A4 itd. ...
. Ja nie mam pojecia jak to zrobic. Prosze o pomoc.
Z gory dziekuje Damian.
Macgru
2005-03-02 15:05:00 UTC
Permalink
Post by Damian
Witam wszystkich, mam problem z pewnym zadaniem ktore mam do
zrobienia. Zaloze ze w komorce A1 jest jakas wartosc i jest ona
pobierana za pomoca utorzonej kwerendy z jakiejs bazy danych. Ale to
ze jest pobierana skad nie jest istotne, wazne jest to zeby w tej
komorce nastepowala zmiana wartosci co jest w opcjach i mozna ustawic
co minute chociazby. Mnie interesuje co trzeba zrobic, aby wartosc
pobierana z komorki A1 aktualizowala sie w komorce A2, potem zalozmy
za minute, wartosc z A1 pokazala sie w komorce A3, potem wartosc
zaktualizowana z komorki A1, znowu pokazala sie w komorce A4 itd. ...
. Ja nie mam pojecia jak to zrobic. Prosze o pomoc.
Z gory dziekuje Damian.
taki kod wklejony w oknie arkusza kopiuje wartosc kom a1 po jej kazdorazowej
zmianiedo komorek a2,3 itd...

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = "$A$1" Then
Target.Copy Range("a" & ActiveSheet.UsedRange.Rows.Count + 1)
End If

End Sub

mcg
Damian
2005-03-02 19:54:46 UTC
Permalink
Post by Macgru
taki kod wklejony w oknie arkusza kopiuje wartosc kom a1 po jej kazdorazowej
zmianiedo komorek a2,3 itd...
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
Target.Copy Range("a" & ActiveSheet.UsedRange.Rows.Count + 1)
End If
End Sub
mcg
Bardzo ladnie to dziala i nawet niewiele zajmuje, dziekuje za fatyge
:) , ale kod dziala tylko wtedy jesli ja recznie zmienie wartosc w
komorce A1. Niestety jesli wartosc komorki A1 zmieni sie w inny
sposob, tzn. jesli pobiore te wartosc z innej komorki, lub poprostu
bedzie to komorka ktora pobiera wartosc za pomoca kwerendy, to nic sie
nie dzieje :( . Pozatym kod pobiera dane tylko wtedy jesli sie
zmienią, a mi chodzilo o to zeby kopiowal wartosc z A1 co jakis
okreslony czas, zalozmy co godzine, minute, itp. Dzieki za fatyge :)
Macgru
2005-03-02 20:26:12 UTC
Permalink
Post by Damian
Post by Macgru
taki kod wklejony w oknie arkusza kopiuje wartosc kom a1 po jej kazdorazowej
zmianiedo komorek a2,3 itd...
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
Target.Copy Range("a" & ActiveSheet.UsedRange.Rows.Count + 1)
End If
End Sub
mcg
Bardzo ladnie to dziala i nawet niewiele zajmuje, dziekuje za fatyge
:) , ale kod dziala tylko wtedy jesli ja recznie zmienie wartosc w
komorce A1. Niestety jesli wartosc komorki A1 zmieni sie w inny
sposob, tzn. jesli pobiore te wartosc z innej komorki, lub poprostu
bedzie to komorka ktora pobiera wartosc za pomoca kwerendy, to nic sie
nie dzieje :( . Pozatym kod pobiera dane tylko wtedy jesli sie
zmieni±, a mi chodzilo o to zeby kopiowal wartosc z A1 co jakis
okreslony czas, zalozmy co godzine, minute, itp. Dzieki za fatyge :)
to dziala przy zdarzeniu calculate

Private Sub Worksheet_Calculate()
Range("a1").Copy
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False ' opcjonalnie
Range("a1").Select ' opcjonalnie
End Sub

mcg
Damian
2005-03-03 13:44:46 UTC
Permalink
Post by Macgru
Post by Damian
Post by Macgru
taki kod wklejony w oknie arkusza kopiuje wartosc kom a1 po jej
kazdorazowej
Post by Damian
Post by Macgru
zmianiedo komorek a2,3 itd...
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
Target.Copy Range("a" & ActiveSheet.UsedRange.Rows.Count + 1)
End If
End Sub
mcg
Bardzo ladnie to dziala i nawet niewiele zajmuje, dziekuje za fatyge
:) , ale kod dziala tylko wtedy jesli ja recznie zmienie wartosc w
komorce A1. Niestety jesli wartosc komorki A1 zmieni sie w inny
sposob, tzn. jesli pobiore te wartosc z innej komorki, lub poprostu
bedzie to komorka ktora pobiera wartosc za pomoca kwerendy, to nic sie
nie dzieje :( . Pozatym kod pobiera dane tylko wtedy jesli sie
zmieni?, a mi chodzilo o to zeby kopiowal wartosc z A1 co jakis
okreslony czas, zalozmy co godzine, minute, itp. Dzieki za fatyge :)
to dziala przy zdarzeniu calculate
Private Sub Worksheet_Calculate()
Range("a1").Copy
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False ' opcjonalnie
Range("a1").Select ' opcjonalnie
End Sub
mcg
Private Sub Worksheet_Calculate()
Range("a1").Copy
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False ' opcjonalnie
Range("a1").Select ' opcjonalnie
End Sub
tak aby dzialal wtedy gdy pracuje akurat w innym arkuszu ? Poniewaz
jesli makrodefinicja funkcjonuje wtedy gdy jestem w Arkuszu nr1 i
przechodze do Arkusza2 i tam pracuje na tych danych to niestety
pokazuje sie blad :|
Macgru
2005-03-03 15:51:13 UTC
Permalink
Post by Damian
Post by Macgru
Post by Damian
Post by Macgru
taki kod wklejony w oknie arkusza kopiuje wartosc kom a1 po jej
kazdorazowej
Post by Damian
Post by Macgru
zmianiedo komorek a2,3 itd...
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
Target.Copy Range("a" & ActiveSheet.UsedRange.Rows.Count + 1)
End If
End Sub
mcg
Bardzo ladnie to dziala i nawet niewiele zajmuje, dziekuje za fatyge
:) , ale kod dziala tylko wtedy jesli ja recznie zmienie wartosc w
komorce A1. Niestety jesli wartosc komorki A1 zmieni sie w inny
sposob, tzn. jesli pobiore te wartosc z innej komorki, lub poprostu
bedzie to komorka ktora pobiera wartosc za pomoca kwerendy, to nic sie
nie dzieje :( . Pozatym kod pobiera dane tylko wtedy jesli sie
zmieni?, a mi chodzilo o to zeby kopiowal wartosc z A1 co jakis
okreslony czas, zalozmy co godzine, minute, itp. Dzieki za fatyge :)
to dziala przy zdarzeniu calculate
Private Sub Worksheet_Calculate()
Range("a1").Copy
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False ' opcjonalnie
Range("a1").Select ' opcjonalnie
End Sub
mcg
Private Sub Worksheet_Calculate()
Range("a1").Copy
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False ' opcjonalnie
Range("a1").Select ' opcjonalnie
End Sub
tak aby dzialal wtedy gdy pracuje akurat w innym arkuszu ? Poniewaz
jesli makrodefinicja funkcjonuje wtedy gdy jestem w Arkuszu nr1 i
przechodze do Arkusza2 i tam pracuje na tych danych to niestety
pokazuje sie blad :|
Range("a1").Select
zamien na
ActiveSheet.Range("a1").Select

zakladam ze dane w arkuszu 1 sa powiazane z arkuszem 2
mcg
Tajan
2005-03-04 06:32:35 UTC
Permalink
Witam!

U?ytkownik "Macgru" <***@gazeta.pl> napisa? w wiadomo?ci news:d07bpb$mk2$***@inews.gazeta.pl...
(...)
Post by Macgru
Post by Damian
Post by Macgru
Private Sub Worksheet_Calculate()
Range("a1").Copy
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial
xlPasteValues
Post by Damian
Post by Macgru
Application.CutCopyMode = False ' opcjonalnie
Range("a1").Select ' opcjonalnie
End Sub
tak aby dzialal wtedy gdy pracuje akurat w innym arkuszu ? Poniewaz
jesli makrodefinicja funkcjonuje wtedy gdy jestem w Arkuszu nr1 i
przechodze do Arkusza2 i tam pracuje na tych danych to niestety
pokazuje sie blad :|
Range("a1").Select
zamien na
ActiveSheet.Range("a1").Select
zakladam ze dane w arkuszu 1 sa powiazane z arkuszem 2
mcg
I za kazdym przeliczaniem arkusza z formula, na aktywnym bedzie wybierana
komorka A1 ? :-) Po co ?
Natepny blad to:
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial
gdyz UsedRange odnosi sie do do aktywnego arkusza, natomiast kopiowanie ma
zachodzic na innym.
Z UsedRange to jest jeszcze taka sprawa, ze obejmuje on rowniez komorki
gdzie zmieniono np. tylko format komorki, wiec dane moga wyladowac gdzies
bardzo daleko:-) Tu raczej nalezaloby uzyc CurrentRegion.
Takze uzycie kopiowania i wklejania jest w tym wypadku zbedne.
Ja proponuje prostsze rozwiazanie:

Private Sub Worksheet_Calculate()
Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = Range("A1")
End Sub

Pozdrawiam
Tajan
Damian
2005-03-04 21:40:25 UTC
Permalink
Post by Tajan
Witam!
(...)
Post by Macgru
Post by Damian
Post by Macgru
Private Sub Worksheet_Calculate()
Range("a1").Copy
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial
xlPasteValues
Post by Damian
Post by Macgru
Application.CutCopyMode = False ' opcjonalnie
Range("a1").Select ' opcjonalnie
End Sub
tak aby dzialal wtedy gdy pracuje akurat w innym arkuszu ? Poniewaz
jesli makrodefinicja funkcjonuje wtedy gdy jestem w Arkuszu nr1 i
przechodze do Arkusza2 i tam pracuje na tych danych to niestety
pokazuje sie blad :|
Range("a1").Select
zamien na
ActiveSheet.Range("a1").Select
zakladam ze dane w arkuszu 1 sa powiazane z arkuszem 2
mcg
I za kazdym przeliczaniem arkusza z formula, na aktywnym bedzie wybierana
komorka A1 ? :-) Po co ?
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial
gdyz UsedRange odnosi sie do do aktywnego arkusza, natomiast kopiowanie ma
zachodzic na innym.
Z UsedRange to jest jeszcze taka sprawa, ze obejmuje on rowniez komorki
gdzie zmieniono np. tylko format komorki, wiec dane moga wyladowac gdzies
bardzo daleko:-) Tu raczej nalezaloby uzyc CurrentRegion.
Takze uzycie kopiowania i wklejania jest w tym wypadku zbedne.
Private Sub Worksheet_Calculate()
Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = Range("A1")
End Sub
Pozdrawiam
Tajan
WOW :)
Damian
2005-03-08 14:20:34 UTC
Permalink
Post by Damian
Post by Tajan
I za kazdym przeliczaniem arkusza z formula, na aktywnym bedzie wybierana
komorka A1 ? :-) Po co ?
Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).PasteSpecial
gdyz UsedRange odnosi sie do do aktywnego arkusza, natomiast kopiowanie ma
zachodzic na innym.
Z UsedRange to jest jeszcze taka sprawa, ze obejmuje on rowniez komorki
gdzie zmieniono np. tylko format komorki, wiec dane moga wyladowac gdzies
bardzo daleko:-) Tu raczej nalezaloby uzyc CurrentRegion.
Takze uzycie kopiowania i wklejania jest w tym wypadku zbedne.
Private Sub Worksheet_Calculate()
Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = Range("A1")
End Sub
Pozdrawiam
Tajan
WOW :)
No wielkie dzieki :) to dziala super, ale mam kolejny problem ... Byz
moze ktos mi z tym pomoze ... . Nie wpisywalem kolejnego, nowego postu
bo sprawa dotyczy tego samego co wyzej. Chodzi mi o to zeby wartosc z
komorki "A1", ktora pobiera sie prawidlowo i ostatnie makro jest
super, wpisywala sie pod warunkiem, juz wyjasniam.

1. Jest komorka "A1" aktualizowana zalozmy po otwarciu pliku
automatycznie (to nie jest problem).
2. Zalozmy, ze w komorce "B1" (lub innej to nie ma znaczenia), jest
formula =DZI?() i pokazuje sie data w formacie 2005-03-08, czyli
(rrrr:mm:dd).
3. W koloumnie "A" dane beda "schodzily" w dó? tak jak w makrze
poprzednio ale warunkowo, tzn. :
- kolumna B poczawszy od "B2" bedzie zawiera?a kolejne daty, tzn.
2005-03-08, 2005-03-09, ... ,itd. a? do ko?ca roku za?ó?my 2005-12-31
(ale to malo istotne), bo wartosc z "A1' powinna sie wpisac o komorke
nizej tylko wtedy jesli data z "B1" bedzie rowna dacie poniezej w
kolumnie "B".

Czyli:

A1(tu jest wartosc aktualizowana) B1(data =DZIS())
A2(wstaw wartosc z komorki A1 jesli B2=B1) B2(data jakas tam)
A3(wstaw wartosc z komorki A1 jesli B3=B1) B3(data kolejna, np.
kolejny dzien)

Zrobilem formule =JEZELI(B2=B1;A1;"") no i dziala ale ZLE ! wartosci
sie wstawiaja w zaleznosci od daty, ale nastepnego dnia wartosc z dnia
poprzedniego znika, a wstawia sie w kolejny. Chodzi o to zeby raz juz
wpisana wartosc tam zostala... :/

Z gory dziekuje za rozwiazanie problemu.

Loading...