>Typy danych
Zmienne mogą mieć określony typ, który definiuje jaki rodzaj informacji może być przechowywany jako wartość tej zmiennej. Typ zmiennej warunkuje wielkość pamięci zajmowanej przez zmienną.
Visual Basic rozróżnia następujące typy zmiennych:
Typ danych |
Wielkość (w bajtach) |
Dokładność |
Charakterystyka (zakres) |
Integer |
2 |
5 |
liczba całkowita od -32.768 do 32.767; |
Long |
4 |
10 |
liczba całkowita długa |
Single |
4 |
6 |
liczba rzeczywista (może mieć część ułamkową) |
Double |
8 |
14 |
liczba rzeczywista dwukrotnie większa od liczy Single; |
String |
1 + 1 na każdy znak |
|
łańcuch znaków; obejmuje tekst maksymalnie do 32.767 znaków; wartość domyślna "" (łańcuch pusty) |
Boolean |
2 |
1 |
wartość logiczna prawda i fałsz |
Date |
8 |
|
data i czas w przedziale od 1 stycznia 100 r. do 31 grudnia 9999 roku; wartość domyślna 0 |
Currency |
8 |
19 |
typ walutowy, liczby rzeczywiste od -922.337.203.658.477,5808 do 922.337.203.685.477,5807; wartość domyślna 0 |
Variant |
1 do 8 |
|
dowolny typ identyfikowany przez Visual Basic w zależności op pierwszego użycia tej zmiennej; wartość domyślna EMPTY (puste) |
>Deklarowanie zmiennej
Typ zmiennej oraz zasięg jej działania (jej dostępność) zależy od miejsca oraz sposobu jej zadeklarowania. Zmienne mogą być deklarowane w sekcji deklaracji modułu, w sekcji deklaracji formularza, albo na początku procedury, w której będą wykorzystane. Zasięg działania określa poza tym użyte słowo kluczowe: DIM, PUBLIC, PRIVATE lub STATIC
DIM oznacza lokalny zasięg zmiennej, ograniczony do procedury lub modułu, w którym zmienna ta została zadeklarowana.
PUBLIC oznacza zmienną dostępną w dowolnym miejscu w programie, w różnych modułach i formularzach.
PRIVATE deklaruje zmienne, które będą widoczne tylko w odrębie modułu lub formularza, w którym zostały zadeklarowane.
STATIC pozwala zadeklarować zmienne, które nie są usunięte z pamięci komputera po zakończeniu działania procedury, lecz ich ostatnia wartość będzie dostępna tylko w następnym wywołaniu procedury. Oczywiście po zakończeniu działania całego programu zmienne te znikają z pamięci i przestają być dostępne.
Przykład deklaracji zmiennych:
Dim Nazwisko As String*20 |
'deklaruje zmiennÄ… Nazwisko jako zmiennÄ… tekstowÄ… |
Static licznik As Integer |
'deklaruje zmiennÄ… licznik jako zmiennÄ… |
Public x, y As Single |
'deklaruje zmienne x oraz y jako zmienne |
>Instrukcje warunkowe
Instrukcja If... Then... Else warunkowo wykonuje blok instrukcji: jeśli pewien warunek jest spełniony (ma wartość True), należy wykonać pewien zestaw poleceń, w przeciwnym zaś przypadku gdy warunek jest fałszywy (ma wartość False) program powinien wykonać inny blok poleceń.
If warunek Then
[blok kodu wykonywany w przypadku gdy warunek jest spełniony]
Else
[blok kodu wykonywany w przypadku gdy warunek nie jest spełniony]
End If
If oraz Then - to słowa kluczowe języka VBA będące swego rodzaju nawiasami warunku.
warunek - jest wyrażeniem logicznym lub zmienną dającą wartość True (prawda) lub False (fałsz).
Else - słowo kluczowe wstawiane pomiędzy ostatnią instrukcją, która ma być wykonana jeżeli warunek jest prawdziwy oraz pierwszą instrukcją, która ma być wykonana jeżeli warunek jest fałszywy.
End If - to słowa kluczowe zaznaczające koniec bloku instrukcji If... Then... Else.
Przykład:
Private Sub CommandButton1_Click()
 If Range("A1").Value = 0 Then
  Range("A2").Value = "wartość wynosi zero"
 Else
  Range("A2").Value = "wartość jest różna od zera"
 End If
End Sub
Select Case to alternatywna wobec If...Then...Else wersja przyrównywania wyrażenia
do kilku różnych wartości. Select Case daje bardziej przejrzysty i efektywny kod.
Select Case Ocena
Case 1
MsgBox `'Cyfra mówi sama za siebie...''
MsgBox `'Popraw siÄ™ !!''
Case 2
MsgBox `'Miernie''
Case 3
MsgBox `'Mogło być lepiej...''
Case 4,5
MsgBox `'Dobrze - albo i bardzo dobrze''
Case Is > 5
MsgBox `'Wprost trudno uwierzyć !''
Case Else
MsgBox `'Ejże, chyba nie ma takiej oceny !''
End Select
>Instrukcja Pętli
W Visual Basicu mamy do dyspozycji dwa typy pętli: pętle z licznikiem For ... Next oraz pętle warunkowe Do While oraz Do Until.
Pętla For ... Next ma następującą postać:
For licznik=pocz to koniec Step krok
   Instrukcje powtarzane
Next licznik
lub
For licznik=pocz to koniec
   Instrukcje powtarzane
Next licznik
Drugiej wersji używa się wtedy, gdy krok pętli jest równy jeden.
Przykład:
Wyświetlenie dziesięciu kolejnych wartości zmiennej licznik.
Dim i As Integer
For i = 1 to 10
 MsgBox "Wartość licznika " & Cstr(i)
Next i
Pętla Do While...Loop to pętla sprawdzająca warunek na początku. Jeśli nie jest on
spełniony, nie wykonujemy instrukcji wewnątrz pętli.
Pętla Do While ma następującą postać:
Do While warunek
   Intrukcje powtarzane
Loop
Przykład użycia instrukcji Do While:
intLiczba=0
Do While (intLiczba<100)
   intLiczba=InputBox("Wpisz liczbę całkowitą","Podaj liczbę")
Loop
Pętla Do... Loop While działa niemal tak samo, jedyną różnicą jest to, że warunek
sprawdzany jest na końcu pętli, a więc instrukcje wewnątrz pętli zostaną wykonane
przynajmniej raz.
W pętli Do Until...Loop warunek sprawdzany jest na początku, zaś w Do...Loop Until
- na końcu.
Składnia:
Do Until warunek
instrukcje
Loop
Oraz
Do
Instrukcje
Loop Until warunek
>Zapis i odczyt plików zewnętrznych
Do otwierania a także do tworzenia nowych plików sekwencyjnych służy instrukcja Open. Poniżej przedstawiam składnie tej instrukcji w jej najprostszej postaci.
Składnia:
Open NazwaPliku For NazwaTrybu As NumerPliku
Objaśnienie:
Open - jest to nazwa polecenia.
NazwaPliku - nazwa otwieranego pliku podana wraz ze ścieżką dostępu (w niektórych przypadkach ścieżkę dostępu można pominąć).
For - słowo kluczowe, które w tym przypadku określa, że za nim znajdzie się tryb dostępu.
NazwaTrybu - słowo kluczowe określające tryb dostępu do pliku. Pliki sekwencyjne mogą być otwierane w następujących trybach:
Output - tryb zapisywania danych. VBA otwiera plik do zapisu danych. Jeżeli plik nie istnieje to zostanie utworzony, natomiast wszystkie dane z istniejącego pliku zostano usunięte.
Append - tryb dopisywania danych. VBA otwiera istniejący plik i dopisuje do niego nowe dane. Jeżeli plik nie istnieje zostaje utworzony.
Input - tryb odczytywania danych. Jeśli plik nie istnieje pojawi się komunikat o błędzie.
As - słowo kluczowe określające (w tym przypadku), że kolejny wyraz określa numer (uchwyt) pliku.
NumerPliku - numer używany przez instrukcję Open podczas otwierania pliku, wartość liczbowa z zakresu od 1 do 511. Jest to identyfikator pliku, identyfikuje on plik w pozostałej części programu.
Przykładowe instrukcje otwarcia plików:
Open "c:\plik.txt" For Output As#1
Otwieramy do zapisu plik plik.txt z katalogu głównego na dysku c:\. Jeśli plik nie istnieje, zostanie utworzony, natomiast wszelkie dane z istniejącego pliku zostaną usunięte.
Open"c:\plik2.txt"For Append As #2
Otwieramy do zapisu plik plik.txt z katalogu głównego na dysku c:\. Jeśli plik nie istnieje, zostaje utworzony. Jeśli plik istnieje, dane będą dopisywane do istniejących w tym pliku.
Open "c:\plik.txt" For Input # As#3
Otwieramy do odczytu plik plik.txt z katalogu głównego na dysku c:\. Jeśli plik nie istnieje, pojawi się komunikat błędu.
Do zapisywania danych w plikach sekwencyjnych służą dwie instrukcje zapisu: Write # i Print #. Poniżej przedstawiam obie instrukcje i różnice występujące między nimi.
Składnia instrukcji Write #:
Write #NumerPliku, [ListaZapisywanychWartości]
ListaZapisywanychWartości - element nieobowiązkowy są to dane, które chcemy zapisać do pliku (wyrażenia numeryczne lub znakowe). Poszczególne elementy bloku danych rozdzielamy średnikami lub przecinkami.
Przykładowe instrukcje zapisu danych:
Write #1, LiczbaOdwiedzin
'Zapisujemy do pliku dane jakie przechowuje zmienna o nazwie LiczbaOdwiedzin. Oczywiście odpowiednie dane przypisujemy wcześniej do zmiennej.
Write #1, "Pozdrawiam wszystkich"; " dzono4"
'Zapisujemy do pliku tekst złożony jakby z dwóch elementów pierwszy to: Pozdrawiam wszystkich, drugi to: dzono4.
Print #1, "Pozdrawiam"; " "; "wszystkich"; Spc(1); "dzono4"
'Przykład zapisania tych samych danych za pomocą instrukcji Print #.
>Funkcje VBA
Podstawowe funkcje wbudowane Visual Basic:
Funkcje matematyczne Rnd liczba losowa Abs (X) wartość bezwzględna Log (X) logarytm naturalny Sqr (X) pierwiastek kwadratowy Sin (X) sinus Cos (X) cosinus Tan (X) tangens ctg(X) = 1 / Tan(X) cotangens Exp (X) e do potęgi
|
Funkcje daty i czasu Date zwraca aktualną datę DateAdd dodaje dwie daty DateDiff liczy czas między dwoma datami Format formatowanie daty i czasu Hour zwraca godzinę z czasu Minute zwraca minutę z czasu Month zwraca miesiąc z daty Now zwraca bieżącą datę i czas |
Funkcje formatujące Format formatowanie wyrażeń LCase łańcuch na małe litery UCase łańcuch na duże litery StrConv formatowanie tekstu LTrim usuwa początkowe spacje RTrim usuwa końcowe spacje Trim usuwa początkowe i końcowe spacje Space zwraca łańcuch wypełniony spacjami String zwraca łańcuch wypełniony znakami |
Funkcje wejścia-wyjścia MsgBox wyświetla okno komunikatu InputBox wyświetla okno wprowadzania danych EOF sprawdza czy osiągnięto koniec pliku Input odczytuje dane z pliku SetAttr ustawia atrybuty pliku GetAttr zwraca atrybuty pliku LoadPicture ładuje obraz graficzny do obiektów Command zwraca argumenty wywołania z linii komend Shell uruchamia zewnętrzny program |
Inne Funkcje Array zam. Variant na tablicę Asc zamienia znak na kod ASCII Chr zamienia kod ASCII na znak Str zamienia liczbe na tekst Val zamienia tekst na liczbę CSng zamienia wartość na Single (CInt, CLng, CDbl etc.) RGB zwraca wartość koloru RGB |
|
>Kontrolki dostępne w VBA
Kontrolki to elementy interfejsu, które programista wykorzystuje w swoim programie. Są to obiekty, których zdarzenie trzeba zaprogramować. Rozmieszcza się je na formularzu. Służą one np. do wprowadzania danych (pole tekstowe, suwaki), oraz ich wyprowadzania (etykiety). Są one ważną częścią programu, gdyż dzięki nim możemy w łatwy sposób sterować pracą programu. Rozmieszczenie kontrolek na formularzu jest bardzo ważne, gdyż świadczy to o estetyce programu i łatwości jego obsługiwania.
Opis podstawowych kontrolek w Visual Basic-u:
Kontrolka |
Ikona |
Opis |
Pole obrazu (PictureBox) |
|
Tworzy pole, w które można wstawić obraz |
Etykieta (Label) |
|
Tworzy etykietÄ™ |
Pole tekstowe (TextBox) |
|
Tworzy pole tekstu, którego zawartość może być zmieniana |
Ramka (Frame) |
|
Wydziela optycznie grupę przycisków oraz definiuje zbiory przycisków opcji |
Przycisk polecenia (CommandButton) |
|
Tworzy przycisk polecenia |
Pole wyboru (CheckBox) |
|
Tworzy pole wyboru razem z tytułem |
Przycisk opcji (OptionButton) |
|
Tworzy przycisk opcji razem z tytułem |
Pole rozwijane (ComboBox) |
|
Tworzy pole listy rozwijanej |
Pole listy (LIstBox) |
|
Tworzy pole listy |
Pasek przewijania (HScrollBar) |
|
Tworzy pasek przwijania (suwak) w poziomie |
Pasek przwijania (VSrollBar) |
|
Tworzy pasek przewijania (suwak) w pionie |
Regulator czasowy (Timer) |
|
Reguluje czas |
Pole listy dysków (DriveListBox) |
|
Tworzy pole listy rozwijanej z dyskami na komputerze |
Pole listy folderów (DirListBox) |
|
Tworzy pole listy z folderami aktualnej ścieżki |
Pole listy plików (FileListBox) |
|
Tworzy pole listy z plikami aktualnej ścieżki |
Kształt (Shape) |
|
Tworzy figurę geometryczną o dowolnym kształcie |
Linia (Line) |
|
Tworzy liniÄ™ prostÄ… |
Obraz (Image) |
|
Tworzy obraz grupy obiektów |
Dane (Data) |
|
Tworzy narzędzie wczytywania i wyświetlania danych |
OLE (OLE) |
|
Tworzy obszar wstawiania obiektu |