Moje doświadczenia z Excelem, Accesem i programowaniem w VBA

Wpisy z tagiem: edytor

wtorek, 12 października 2010

Człowiek ze swojej natury jest leniwy. Na szczęście - inaczej koło byłoby do dziś nieznanym wynalazkiem. Idąc tym tropem - spróbujmy zautomatyzować skoroszyt Excela. O tym, jak dopisać makro do przycisku - pisałam tu:
Przycisk makra
Teraz pora zastanowić się nad przypisaniem makra do typowych zdarzeń skoroszytu czy arkusza.

W oknie projektu VBA sprawdzamy jakie mamy możliwości. Wybierając po lewej stronie skoroszyt (ThisWorkbook):

zdarzenia skoroszytu

W oknie po prawej stronie - możemy wybrać zdarzenie związane z skoroszytem:

zdarzenia skoroszytu

(kliknij na rysunek, aby go powiększyć) 

W analogiczny sposób możemy sprawdzić zdarzenia związane z arkuszem:

zdarzenia arkusza

W tym przypadku - zaznaczając Arkusz1 - wybieramy zdarzenia właśnie z nim związane. Jeżeli chcemy oprogramować inny arkusz - musimy go wybrać w oknie projektu. Lista dostępnych możliwości wygląda tak:

zdarzenia arkusza

 (kliknij na rysunek, aby go powiększyć)

O najbardziej typowych zdarzeniach napisze w kolejnych notkach. A o samych makrach - pod tagiem makro.

 

niedziela, 14 marca 2010

Przy prostych funkcjach pisanych w VBA - nie ma potrzeby kontroli wartości pośrednich. Potrzeba taka może się jednak pojawić gdy funkcja jest bardziej skomplikowana, a chcemy mieć pewność, że wszystko działa prawidłowo - dobrze jest móc podejrzeć co się dzieje w trakcie wykonywania kodu. Metod jest kilka. W tej notce opiszę tewn, który sama najczęściej stosuję przy analizie kodu. 
Jako przykład może posłużyć funkcja PodwojonaSumaKomorek opisana tu:
Piszemy funkcję w VBA...
W edytorze VBA wstawiamy punkt przerwania w pierwszej linii programu (zaraz po bloku deklaracji zmiennych). Jak? Najszybciej poprzez kliknięcie na pasku obramowania z lewej strony tej linii. Punkt przerwania zostanie zaznaczony czerwoną kropką.

wstawianie punktu przerwania

W trakcie wykonywania kodu - edytor zatrzyma funkcję w tej linii. Samą funkcję wywołujemy w arkuszu Excela.

wstawianie punktu przerwania

Komórki A1 i B1 mają odpowiednio wartość 3 i 4 (akurat w tym przykładzie), natomiast komórka C1 jest wartością wyliczonej funkcji:
C1=PodwojonaSumaKomorek(A1;B1)
 
Teraz wystarczy kliknąc w znak funkcji na pasku:

wstawianie punktu przerwania

Pojawi się klasyczne okno dialogowe funkcji (już z wprowadzonymi wcześniej argumentami). Po naciśnięciu przycisku OK Excel zacznie wykonywać funkcję. Ponieważ w tym przypadku mamy do czynienia z funkcją własną uzytkownika - musi się odwołać do VBA, gdzie czeka punkt przerwania. Automatycznie zostaniemy więc przeniesieni do edytora VBA.

wstawianie punktu przerwania 

W punkcie przerwania pojawiło się żółte zaznaczenie linii. Oznacza to linię kodu, która będzie teraz wykonana. Warto jednak już w tym miejscu - podejrzeć wartości poszczególnych zmiennych. Wystarczy najechać myszką na dowolną zmienną w dowolnym miejscu kodu. Pojawi się etykietka, w której widoczna będzie aktualna wartość danej zmiennej. Na rysunku powyżej taka etykietka jest widoczna u samej góry - wartość zmiennej PierwszySkładnik=3. W identyczny sposób można oczywiscie skontrolować wartość pozostałych zmiennych. 
Wartości zmiennych Suma i PodwojonaSumaKomorek są w tej chwili równe zero. Teraz wystaczy nacisnąć przycisk F8 - czyli wykonanie kolejnego kroku programu. Efekt na ekranie będzie wygladał tak:

wstawianie punktu przerwania

Ponieważ kolejna linia programu została wykonana - wartość Sumy zmieniła się po wykonaniu działania z linii 3. Teraz równa sie akurat 7.
Kolejne kroki programu - kolejne naciśnięcia F8.
Przejście do końca programu (z wykonanie autmatycznym kolejnych kroków) - F5.

Po zakończeniu analizy programu - koniecznie pamiętajmy o zdjęciu punktu przerwania. Wystarczy kliknąć ponownie na kropkę oznaczającą ten punkt. Jeżeli tego nie zrobimy - za każdym razem będziemy trafiać do edytora.

Przykład jest prosty, ale sprawdza się w analizie skomplikowanych kodów. Zasada psotępowania jest taka sama. Zreszta nie tylko w Excelu, ale również w Accessie.

czwartek, 04 marca 2010

VBA to skrót od Visual Basic for Aplications czyli odmiany języka programowania Visual Basic zawartego w poszczególnych aplikacjach pakietu Microsoft Office. W VBA nie można napisać integralnego, niezależnego programu - wymaga on środowiska, w którym został napisany. Czyli jeżeli piszemy jakąś procedurę VBA w Excelu - nie uruchomimy jej na komputerze, na którym Excela brak.  

Jak zacząć? 
W Excelu 2003 (i wcześniejszych wersjach):  
        Narzędzia --> Makro --> Edytor Visual Basic
W Excelu 2007 - poprzez Pasek Deweloper
A na skróty - poprzez Alt+F11

Otwarte zostanie w ten sposób okno edytora. Jeżeli mamy do czynienia ze skoroszytem, w któym nie ma jeszcze żadnego makra ani funkcji - nie ma on modułu i musimy go wstawić.
Insert --> Module

edytor VBA

Jezeli plik posiada już wpsiany kod (lub nagrane makro) - moduł już istnieje i możemy go zobaczyć i edytować wybierając moduł w oknie projektu:

okno projektu VBA

Kolejnym krokiem jest wybór procedura (czyli makro wykonujące jakieś działania w pliku) czy funkcja, której wynikiem jest jakaś obliczona wartość (oczywiście nie tylko liczbowa). 
Dla procedury opcję Sub, dla fukcji -  Function. W polu Name wpisujemy nazwę procedury/funkcji i naciskamy OK. Na tym etapie pozostałe opcje zostawiamy bez zmiany.

wstaw funkcję

Wszystkie pozostałe czynności - to już edycja kodu. I temat na osobną notkę.

08:42, marzatela , VBA
Link Dodaj komentarz »
| < Lipiec 2017 > |
Pn Wt Śr Cz Pt So N
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            


Książki warte polecenia
zobacz szczegóły...


A tu oferta na dziś:





ministat liczniki.org



Napisz do mnie!