Re: Hello everyone. problem z excelem--

Autor: Andrzej Abraszewski <abra_at_clan.pl>
Data: Wed 27 Oct 1999 - 12:41:53 MET DST
Message-ID: <3816D6F1.E80F73E1@clan.pl>

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