Witam !
Tomek Lisowski odpowiada na :
>
> Użytkownik Szymon Śmigasiewicz <benyk@priv4.onet.pl> w wiadomości do grup
> dyskusyjnych napisał:3815D382.A702EA01@priv4.onet.pl...
> > Jednak chodzi mi o MAKRO(czy cośtam), które po naciśnięciu klawisza
> > będzie sumować do miejsca
> > położenia kursora(położenia w momencie kiedy wywołuję makro) i w tym
> > miejscu
> > umieszczać wynik.
> > Jak takie makro zarejestrować?
> Proponuję następujące makro w VBA (Excel 95, 97, 2000)
>
> Sub ZliczanieKolumny()
> Dim k1 As Range, k2 As Range
> Set k1 = Selection.End(xlUp)
> Set k2 = Selection.End(xlDown)
> k2.Offset(1, 0).Formula = "=SUM(" & Range(k1, k2).Address(False, False) &
> ")"
> End Sub
>
> wystarczy być w dowolnym wierszu wewnątrz kolumny (niekoniecznie pod
> kolumną), a makro samo znajdzie pierwszy i ostatni wiersz z danymi w tej
> kolumnie i pod kolumną wstawi formułę z sumą. Nie ma problemu, żeby podpiąć
> to makro do jakiejś kombinacji klawiszy, do przycisku na arkuszu, ikonki na
> pasku narzędzi, czy pozycji w menu.
No i ladnie. A co bedzie jako pole w danej kolumnie bedzie nie
wypelnione (blank)? Obliczenia zatrzymaja sie na tej wlasnie komorce. A
co bedzie jak pole bedzie zawieralo tekst, date czy cokolwiek innego ? A
co bedzie jak bedzie wykazywalo ERR (ja np czesto jako test poprawnosci
obliczen umieszcza w kluczowych polach arkusza jako wynik nieporawnosci
test funkcje @ERR ) ?
No coz makro trzeba bedzie rozbudowac by bylo fool proof ;)
> > ps. czy w excelu 4 win31 jest możliwość stworzenia Zeszytu z kilkoma
> > Arkuszami?
> > W QP jest to prostsze?
>
> Niestety nie wiem :-(
No to popatrzcie jak to rozwiac mozna w Quattro Pro (for DOS ;) )
Zapisze to ogolnie stosowanej notacji :
Zakladam ze obliczenia maja byc wykonywane od komorki A1 co oczywiscie
mozna obsluzyc tak by makro 'pytalo' uzytkownika od ktorej komorki chce
sumowac
suma
\a {RECALC @CELLPOINTER("address")}
{/Name;Create}blok~ ; lub {/enc}blok~ (uzycie keystrokes)
A1..
kon
~
{LET suma;@sum(blok)}
komorka w polu o adresie kon zawiera @CELLPOINTER("address") ktora jak
wiemy wskazuje adres i jesli np stoimy' na komorce A6 to w tym polu ,
po uruchomieniu makra pojawi, sie wpis $A$6 jesli na A10 to $A$10
Po nacisnieciu ALT+a w polu o adresie suma pojawi sie
suma z wartosci pol od A1 do wskazywanej przez kursor.
Jak wiemy funkcja @sum() zlicza jedynie wartosci numeryczne ignorujac
wszelkie 'blank cell' i 'labels' ;)
dzieki czemu ksiegowa moze latwo wylapac gdzie zrobila blad wprowadzajac
zamiast zera literke 'O' (czesty blad) a nie ma pojawiaja sie problemy o
ktore 'zahaczylem' przy okazji oceny makra napisanego w VBA
Dodatkowym atutem mojej propozycji jest ze gdy wskazemy np na pole B6 to
otrzymamy sume z dwoch kolumn (z obszaru A1..B6)
Czy jest to prostsze rozwiazanie ? O niebo. Czemu ? Ano dlatego ze bedac
zawartym w arkuszu staje sie dynamicznym . Dolozenie wiersza czy kolumny
nie znieksztalca jego tresci czego nie mozna powiedziec o makrach
pisanych z zastosowaniem VB f Excel (VBA)
Oczywiscie jak kazdy program tak i to makro mozna sobie dowolnie
pokomplikowac by i jakies wodotryski sie w nim pojawily ;)
> Pozdrawiam
>
> Tomasz Lisowski
milo mi bylo skrzyzowac rekawice ;)
pozdrawiam
A.A.
Received on Wed Oct 27 13:02:41 1999
To archiwum zostało wygenerowane przez hypermail 2.1.8 : Thu 09 Mar 2006 - 15:04:47 MET