Jun 10 2008

Wtorki z VBA — kurs dla początkujących cz. 2

Posted by Bartek

W poprzedniej części opisałem podstawowe elementy edytora. Dziś napiszemy pierwszy program. Otwórz nowy moduł i wklej w nim poniższy kod:

Sub Obwodkola()
    'program oblicza obwod kola
    Const pi = 3.14
    Dim r As Integer, obw As Single
    r = InputBox("Podaj promień:")
    obw = 2 * pi * r
   Msgbox "Obwod wynosi =" & obwod
 End Sub

Nasz program działa następująco: W pierwszej linijce definiowana jest stała pi. Następnie komputer rezerwuje w pamięci dwa miejsca w których przechowywany będzie obwód i promień. W kolejnej linijce przy pomocy okienka InputBox wczytywana jest wartość promienia. Program oblicza obwód i wyświetla go w odpowiednim okienku.

Podstawowe informacje o programach

Program w języku VBA wygląda następująco:

Sub NazwaProgramu()
   [instrukcje]
End Sub

Każdy program rozpoczyna się od słowa kluczowego Sub i nazwy procedury wraz z nawiasami. Nazwa procedury nie może: zawierać spacji, pauz, rozpoczynać się od cyfry, być dłuższa niż 256 znaków, a także być identyczna z nazwą polecenia lub funkcji w VBA. Program zawsze kończy się poleceniem End Sub. Aby przerwać działanie programu korzystamy z instrukcji Exit Sub.
Program składa się z instrukcji zapisanych w osobnych linijkach. Długość instrukcji jest dowolna. Aby przerwać instrukcję i kontynuować w kolejnej linii używamy znaku spacji i podkreślenia.

  MsgBox "To jest badzo dluga instrukcja _
  sklada sie z 2 linijek

Interpreter nie rozróżnia małych i wielkich liter. Tak wiec zapis msgbox oraz MsgBox będzie oznaczał dla niego to samo. Wiersze rozpoczynające się od apostrofu ‘ to komentarze. Komentarze nie są analizowane przez kompilator, a więc nie wpływają na działanie programu.

Zmienne i stałe

Zmienne są podstawą każdego języka programowania. Zmienna (variable) to identyfikator (nazwa) dla miejsca magazynowego (pamięci komputera), która przechowuje wartość jakiegoś typu. Stała to zmienna, która w trakcie działania programu nie zmienia swojej wartości. Ograniczenia dotyczące nazw są takie same jak ograniczenia dotyczące nazw procedur. Składnia deklaracji zmiennej wewnątrz programu wygląda następująco:

Dim nazwaZmiennej [As TypDanych]

Komputer zawsze przechowuje wartości zmiennych w postaci liczbowej (zer i jedynek). Typ zmiennej to sposób w jaki programista chce, aby kompilator widział zmienną, co znacznie ułatwia pracę. Każdy język programowania na wbudowaną listę typów. Najważniejsze typy w VBA to:

  • Integer (Long) - w zmiennych tego typu mogą znajdować się tylko liczby całkowite z przedziału od -32 768 do 32 767 (lub odpowiednio -2*10^9 do 2*10^9)
  • Single -– ten typ mówi kompilatorowi, ze w zmiennej będą przechowywane liczby rzeczywiste od -1,79∙10^38 do 3,4∙10^38 z dokładnością do sześciu miejsc po przecinku.
  • String – może przechowywać ciąg znaków od 0 do 109 długości.
  • Date – od #01-01-100# do #31-12-9999#.
  • Boolean – zmienna logiczna, może zawierać wartości True albo False

VBA nie wymaga deklaracji zmiennych. Jeżeli nie zadeklarujesz zmiennej interpreter sam spróbuje przypisać jej specjalny typ Variant, i będzie domyślał się jej typu na podstawie instrukcji, których użyłeś.  W dalszym ciągu będziemy starali się unikać korzystania ze zmiennych typu Variant, ponieważ:

  • Deklarowanie zmiennych pozwala programiście panować nad błędami wynikającymi z pomyłek przy wprowadzaniu danych przez użytkownika.
  • Pisząc duże programy często zdarza się przez pomyłkę dwa razy nazwać zmienną tak samo, mimo że ma ona przechowywać różne dane. Znalezienie takiego błędu jest bardzo trudne.
  • Jeżeli zawsze będziesz deklarował zmienne, bo popełniając literówkę w nazwie zmiennej będzie to łatwiejsze do wykrycia.
  • Nie zadeklarowana zmienna zajmuje w pamięci średnio 2 razy więcej miejsca niż zwykła zmienna
  • Szczególnie przy pracy z dużymi zakresami danych (tablicami) praca z właściwymi typami zmiennych przyśpiesza działanie programu (co jak potem pokaze nie jest do końca prawdą).

Reasumując -- deklaruj wszystkie zmienne, a jeżeli potrzebujesz skorzystać z Varianta napisz to wprost.

Aby wymusić deklarowanie zmiennych należy w pierwszym wierszu modułu wpisać polecenie Option Explicite.

Podczas deklaracji zmiennym nadawane są im wartości początkowe:

  • Liczbowa  = 0
  • String  = „” (pusty ciąg znaków)
  • Variant Empty
  • Object Empty

Stałą stosujemy, jeżeli w programie będziemy posługiwali się daną, która nie będzie się zmieniała w trakcie działania programu. Stosowanie stałych nie jest koniecznej (nie wpływa na działanie programu), ale ułatwia późniejszą analizę kodu.

 
Const NazwaZmiennej As TypDanych = Wartosc
 
Jeżeli w VBA w edytorze podajemy wartość ułamkowa do piszemy ją z kropką. Jeżeli wprowadzamy dane do programu to piszemy je z przecinkiem. Edytor 2.5, a Wprowadzanie danych 2,5

Pisząc duże programy wygodniej zawrzeć w nazwie zmiennej jej typ, tak aby wystarczył rzut oka do zidentyfikowania typu danych. I tak: Integer poprzedzamy przedrostkiem i, Long (l), Single (s), Date (dt), String (str), Object (o).

Wczytywanie i wyświetlanie danych -funkcje MsgBox i InputBox

Każda linijka umieszczona pomiędzy Sub i End Sub to jedno działanie jakie ma wykonać komputer. Instrukcja Msgbox służy do wyświetlania na ekranie komputera okna z tekstem zdefiniowanym przez programistę i/lub oczekiwanie na wybór jednego z przycisków. Każda instrukcja przyjmuje listę argumentów, na podstawie których generuje wynik (podobnie jak funkcja matematyczna). Argumenty mogą być opcjonalne lub wymagane.

Uproszczona składnia Msgbox

 
MsgBox( TekstKomunikatu [,Przyciski])
 

Funkcja Msgbox posiada tylko jeden argument wymagany, czyli tekst który ma zostać wypisany na ekranie. Predefiniowane wartości VBA dla składowej przyciski oraz wartości zwracane przez funkcję dokładnie opisane są w pliku pomocy (Msgbox w edytorze zaznaczyć i nacisnąć F1).
Z kolei instrukcja:

 
NazwaZmiennej = InputBox(„Komunikat na ekranie”)
 

Powoduje wyświetlenie na ekranie okienka z napisem „Komunikat na ekranie” oraz miejscem na wpisanie wartości zmiennej. Po naciśnięciu przycisku OK. Wartość ta jest przypisywana do zmiennej znajdującej się przed znakiem =.

Instrukcja przypisania

Instrukcja przypisania jest instrukcją VBA wykonującą matematyczne obliczenia i przypisującą wynik zmiennej lub obiektowi. W języku VBA funkcję operatora przypisania spełnia znak =.

Operatory arytmetyczne

Operator to działanie które pozwala nam zmieniać wartości zmiennych. 1)Jeżeli w danym wyrażeniu występuje więcej niż jeden operator oraz nie występują nawiasy to program wykonuje je w następującej kolejności:

  • ^ potęgowanie
  • – negacja
  • *, / mnożenie lub dzielenie
  • \ część całkowita z dzielenia
  • Mod dzielenie modulo
  • -,+ dodawanie i odejmowanie
  • & konkatenacja
Uwaga = oznacza operację przypisania tak więc instrukcja a = b nie oznacza, że a jest równe b tylko że wartość zmiennej b zapisujemy do zmiennej a.

Z tydzień zajmę się instrukcjami sterującymi.

Powiązane artykuły:

Filed under : Kurs VBA, Wszystkie | 2 Comments »

2 Responses to “Wtorki z VBA — kurs dla początkujących cz. 2”

  1. deemuzi says:

    w funkcji na Obwodkola wkradł się błąd:
    Msgbox “Obwod wynosi =” & obwod

    a powinno oczywiście być:
    Msgbox “Obwod wynosi =” & obw

  2. wqe@wq.pl says:

    tu jest błąd:

    Msgbox “Obwod wynosi =” & obwod

    proszę to porawić

Leave a Reply