# Zastosowanie VBA w bazach danych

### VBA - to skrót od nazwy języka programowania "VISUAL BASIC for APLLICATION"

Język ten pozwala zaprogrmować rozwinięcie aplikacji polegające na stworzeniu nowych (makra wykorzystują już istniejące funkcje) rozszerzeń (funkcji).

Język VBA używa głównie dwóch rodzajów procedur:

- sub - wykonuje operacje gdy zostanie wywołąny identyfikator umieszczony bezpośrednio za słowem "sub": sub instrukcja end sub
- function - funkcja operująca na danych: function instrukcja end function

Procedury "sub" i "function" mogą być poprzedzone słowami "private" lub "public" określcymi zasięg działania procedury.

Kod VBA umieszcza się w module standardowym

Wybór mudułu w którym piszemy kod VBA:

Po włączeniu edytora VBA pierwszą rzeczą jest włączenie okna podglądu "Immediate".
aby to zrobić włączamy je w menu "widok" (Viev).

Następnie przystępujemy do programowania kodu w oknie "CODE". Po napisaniu funkcji (np. sumowania dwuch liczb) jej działanie można sprawdzić w oknie "Immediate":

Po zapisaniu modułu z odpowiednią nazwą mamy do niego dostęp w naszym projekcie:

### Typy danych w VBA

Typ danych | Rozmiar | Opis i zakres wartości
--- | --- | ---
Byte | 1 bajt | Liczby całkowite od 0 do 255
Boolean | 2 bajty | Wartości logiczne: True (prawda) lub False (fałsz)
Integer | 2 bajty | Liczby całkowite od -32 768 do 32 767
Long | 4 bajty | Liczby całkowite od -2 147 483 648 do 2 147 483 647
Single | 4 bajty | Liczby zmiennoprzecinkowe pojedynczej precyzji: od -3,402823E38 do -1,401298E-45 dla wartości ujemnych od 1,401298E-45 do 3,402823E38 dla wartości dodatnich
Double | 8 bajtów | Liczby zmiennoprzecinkowe podwójnej precyzji: od -1,79769313486231E308 do -4,94065645841247E-324 dla wartości ujemnych od 4,94065645841247E-324 do 1,79769313486232E308 dla wartości dodatnich
Currency | 8 bajtów | Duża precyzyjna liczba; może zawierać 19 cyfr, w tym cztery na prawo od przecinka. Wartości z przedziału: od -922 337 203 685 477,5808 do 922 337 203 685 477,5807
Decimal | 14 bajtów | Bardzo duża, bardzo precyzyjna liczba; może zawierać 29 cyfr oraz do 28 miejsc na prawo od przecinka. Wartości z przedziału: +/-79 228 162 514 264 337 593 543 950 335 bez przecinka dziesiętnego +/-7,9228162514264337593543950335 z 28 miejscami po przecinku Najmniejsza wartość niezerowa to: +/-0,0000000000000000000000000001
Date | 8 bajtów | Daty i godziny: od 1 stycznia 100 do 31 grudnia 9999
Object | 4 bajty | Dowolne odesłanie do wartości typu Object
String | 10 bajtów + liczba znaków | Tekst o zmiennej długości od 0 do 2 miliardów znaków
String | liczba znaków | Tekst o stałej długości od 1 do 65 400 znaków
Variant | 16 bajtów | Dowolna wartość liczbowa w zakresie określonym dla typu Double
Variant | 22 bajty + długość ciągu | Taki sam zakres co dla zmiennej typu String zmiennej długości
Definiowany przez użytkownika za pomocą struktury Type | Liczba wymagana przez elementy | Zakres każdego elementu jest taki sam jak zakres typu danych tego elementu

W przypadku, gdy zmienna ma typ, który nam nie odpowiada to można go zmienić stosując słowo kluczowe: dim (dimmension - wymiar)

Np. polecenie nadfające zmiennej wartość całkowitą będzie wyglądać następująco:
DIM mojaZmienna AS Integer

### Zasady nazywania zmiennych i stałych:

- początek nazwy zmiennyj powinien jednoznacznie oznaczać jej typ - np: bytZmienna1
- nazwa zmiennej powinna zaczynać się małą literą
- wyrazy tworzące zmienną mogą zaczynać się dużą literą - np: toJestZmiennaCalkowita
- jeżeli chcemy odzielić wydazy nie używając dużych liter pożna użyć podkreślnika "_" - np: to_jest_zmienna_calkowita
- nie stosuje się polskich liter

### Tablice ze zmiennymi

Przykład deklaracji tablicy zawierającej dni tygodni zaczynając od niedzieli:

⇒ Spis treści ⇐

⇐ PREV NEXT ⇒