What's new

-Łatwy VBA dla pocz?tkuj?cych #1

Status
Not open for further replies.

Grimekk

memsoria.pl
Joined
Oct 9, 2011
Messages
609
Reaction score
56
Wst?p
Po mojej ostatniej serii C++ postanowi?em, ?e t?umaczenie podstaw cpp ludziom kt?rzy nigdy nie mieli styczno?ci z programowaniem jest pozbawione jakiegokolwiek sensu. Dobrym odpowiednikiem cpp do nauki okaza?o si? bardzo proste w u?ytku VBA kt?re wbrew pozorom do?? obszernie pozwala u?ytkownikowi na manipulacj? kodem i uczy go jak poprawnie konstruowa? program, tak aby dzia?a? jak nale?y. Ju? do?? dawno planowa?em tak? seri?, ale dopiero teraz mam czas aby to wszystko dobrze opisa?, albowiem wiem, ?e czytanie ?le napisanych poradnik?w to nie tylko strata czasu, ale i zbi?r nerw?w spowodowanych przez brak umiej?tno?ci autora w t?umaczeniu ?opatologicznym - a wi?c tu i teraz gwarantuj? Wam przyjemn? nauk? kt?ra miejmy nadziej?, b?dzie pozbawiona niepotrzebnych, negatywnych emocji :mad:

IDE - Zintegrowane ?rodowisko Programistyczne
IDE to aplikacja (lub zesp?? aplikacji) kt?re kompiluje kod ?r?d?owy (wi?cej ). Kr?tko m?wi?c, IDE to miejsce w kt?rym b?dziemy pisa? i uruchamia? nasze programy.
Poradniki takie jak ten s?awi? si? tym, ?e s? cz?sto wr?cz zawalone linkami do przer??nych kompilator?w, niemniej jednak ja oszcz?dz? Wam nieprzyjemno?ci z wybieraniem w?a?ciwego. Pewnie wielu z Was nie wie, ale nasz kompilator jest ju? najprawdopodobniej w waszym systemie (je?li posiadasz pakiet Microsoftu z Excelem). Program kt?rego ja b?d? u?ywa? to Microsoft Excel 2010 - je?li go nie posiadasz to b?dziesz musia? poszuka? sobie odpowiednika na w?asn? r?k? albo po prostu skorzysta? z ostatnich promocji na thepiratebay i "zakupi?" program kt?rego u?ywa? b?d? w tej serii ja :hah:.

W ka?dym razie, gdy ju? otworzysz Excela (koniecznie t? wersj? z 2010) to kliknij alt+F5. Otworzy Ci si? nasze IDE. Nast?pne zadanie to stworzenie modu?u. Na screenie poni?ej przedstawi?em gdzie jest sekcja w kt?rej umieszczamy nasze modu?y:
r1bddt.png

Modu? tworzymy poprzez klikni?cie prawym przyciskiem myszy na zaznaczony napis - p??niej z listy wybieramy insert>module (w polskiej wersji excela nazwy mog? si? r??ni?). W tym za? oknie mo?emy nazwa? nasz modu?:
33233w1.png

Jak wida? ja nazwa?em m?j jestem_zajebisty (warto wspomnie?, ?e nazwa nie mo?e zawiera? spacji).
W okienku kt?re si? pojawi?o b?dziemy pisa? nasz kod. Pro?cizna. :confused:

Option Explicit
Za ka?dym razem po rozpocz?ciu nowego modu?u powinni?my doda? option explicit na samej g?rze. Option explicit wymusza zadeklarowanie wszystkich zmiennych w pliku i cho? to mo?e si? wydawa? na t? chwil? niejasne, to u?ywanie option explicit jest obowi?zkowe.

Kod
Zacznijmy od przetestowania pewnego kodu, p??niej go przeanalizujemy. Skopiuj to do kompilatora:
Code:
Sub JestemZajebisty()

    Dim iWartosc As Integer

        iWartosc = InputBox("Podaj liczbe pomiedzy 1-10")
    
        If iWartosc <= 5 Then
            MsgBox ("Wez sie tato.")
        ElseIf iWartosc <= 10 Then
            MsgBox ("Wez sie mamo")
        Else
            MsgBox ("Podana liczba jest za duza")
        End If

End Sub
Teraz Twoje okienko powinno wygl?da? w ten spos?b (razem z option explicit):
2m64y1x.png


Poprzez klikni?cie F5 uruchamiamy nasz program. Powinno pojawi? si? nam takie okienko:
huovfb.png

Teraz wykonaj nast?puj?ce zadania po kolei:
1. Do okienka wpisz 2 i kliknij enter. Wyskoczy Ci wiadomo??.
2. Uruchom program ponownie, ale tym razem wpisz 8 i kliknij enter. Wyskoczy Ci wiadomo??.
3. Uruchom program po raz kolejny, teraz wpisz 16 i kliknij enter. Wyskoczy Ci wiadomo??.

Po wykonaniu punktu pierwszego powinna pojawi? Ci si? taka wiadomo??:
2r5ak3o.png

Po wykonaniu za? punktu drugiego wyskoczy Ci taka wiadomo??:
12214rs.png

I w ko?cu, po wykonaniu ostatniego punktu wyskoczy Ci ta wiadomo??:
2w5qcea.png

Fascynuj?ce, wiem. Teraz przejd?my do analizy kodu.

sub JestemZajebisty() - sub to funkcja kt?r? jak wida? nazwali?my JestemZajebisty. Powodem dla kt?rego musia?em rozpocz?? s?owo "zajebisty" od du?ej litery jest to, ?e zmienne w VBA nie mog? zawiera? spacji, zatem gdy mamy dwa s?owa to poprzez oddzielanie je du?? liter?, nazwa od razu staje si? o wiele bardziej czytelniejsza. W () cz?sto umieszczane s? parametry o kt?rych dzi? pisa? nie b?d?.

dim iWartosc As Integer - poprzez u?ycie dim deklarujemy zmienn? iWartosc (zmienna to po prostu miejsce w programie w kt?rym umie?cimy pewne dane. "Deklaruj?c" za? sygnalizujemy programowi o istnieniu takowej zmiennej). Po As zawsze umieszczamy typ zmiennej. Ja w tym przypadku u?y?em typu . W pierwszych lekcjach skupimy si? raczej na zadaniach matematycznych, dlatego te? integer'a b?dziemy u?ywa? bardzo cz?sto.

iWartosc = InputBox("Podaj liczbe pomiedzy 1-10") - u?ywaj?c tej instrukcji przypisujemy warto?? zmiennej iWartosc (cholera, mog?em j? inaczej nazwa?, teraz b?dzie bardziej pogmatwane :curse:). InputBox tworzy po prostu okienko z zapytaniem "Podaj liczbe pomiedzy 1-10". Liczba kt?ra b?dzie wpisana do okienka b?dzie warto?ci? zmiennej iWartosc.

If iWartosc <= 5 Then - teraz gdy iWartosc b?dzie ju? mia?o przypisan? liczb?, sprawdzimy j?. if po polsku znaczy "je?li". Kontynuuj?c, "je?li" iWartosc jest <= (mniejsza lub r?wna (<= jest jednym z operator?w arytmetycznych)) then (czyli po polsku, po prostu "w?wczas" lub "to") - i tu przechodzimy do nast?pnych polece? programu. M?wi?c pro?ciej: je?li warto?? zmiennej iWartosc jest mniejsza lub r?wna 5 to...

MsgBox ("Wez sie tato.") - ta instrukcja jest wykonywana tylko gdy poprzedni warunek if zostanie spe?niony. Wy?wietla ona okienko z wiadomo?ci? "Wez sie tato.". Dlatego te? wcze?niej po wpisaniu "2" warunek zosta? spe?niony i wiadomo?? zosta?a wy?wietlona.

ElseIf iWartosc <= 10 Then - elseif (czyli kolejny warunek if) zostaje wykonany tylko gdy warunek if nie jest spe?niony. iWartosc <= 10 Then sprawdza warto?? zmiennej iWartosc i je?eli ta jest mniejsza lub r?wna 10 (<= 10) to... - program wykonuje nast?pn? instrukcj?.

MsgBox ("Wez sie mamo") - dzia?anie msgbox'?w ju? t?umaczy?em, wi?c jedyne co tu trzeba powiedzie? to, ?e okienko jest wy?wietlane tylko je?li warunek elseif jest spe?niony.

Else - else (pl. w innym wypadku) to warunek kt?ry zostaje spe?niony tylko i wy??cznie wtedy gdy poprzednie nie by?y.

MsgBox ("Podana liczba jest za duza") - instrukcja wykonywana je?li oba if i elseif nie zosta?y spe?nione (przez co spe?niony zosta? warunek else).

End If - end if zamyka po prostu wszystkie instrukcje warunkowe. Warto wspomnie?, ?e po u?yciu if'a end if zawsze musi by? napisany.

End Sub - zako?czenie programu. Ka?dy program musi mie? koniec wi?c wpisanie End Sub jest obowi?zkowe (chocia? nasz kompilator zwykle wpisuje to automatycznie).

Koniec
I w ten oto spos?b doszli?my do ko?ca lekcji pierwszej. Kolejne poradniki powinny si? ukazywa? regularnie. Pozdrawiam :hi:
 

Restles

Senior User
Joined
Aug 31, 2012
Messages
616
Reaction score
51
Odp: VBA dla pocz?tkuj?cych #1

Te? podstawy, i tak mi si? wydaj?, ?e nie zrozumiej? :)
 

Zawsze Blazen

Advanced User
Joined
Jan 27, 2013
Messages
181
Reaction score
11
Odp: VBA dla pocz?tkuj?cych #1

Bardzo fajnie :) Na prawde :) mysle ze idalnie dla poczatkujacych
 

Blackq

Advanced User
Joined
Oct 29, 2010
Messages
339
Reaction score
74
Age
31
Odp: VBA dla pocz?tkuj?cych #1

Super, tylko nie wiem czy typowego gracza Tibii zainteresuje VBA, kt?re do niczego nie b?dzie mu potrzebne. Jest opcja, ?e wbije osoba zewn?trz kt?ra akurat szuka informacji na ten temat, tylko taka osoba zapewne nie b?dzie mia?a nic wsp?lnego z tibi?, wi?c lepiej by by?o jakby? utworzy? swoj? prywatn? stron? z tego typu poradnikami.
 
Status
Not open for further replies.
Top