# Datové typy

Datové typy počítači pomáhají s určením typu dat hodnoty, která se nachází v proměnné. To pomáhá k určení funkcí, které se s proměnnou dají použít. Zjednodušeně řečeno: pokud počítač ví, že je daná proměnná například číslo, dokáže určit, že se tato proměnná dá sčítat s dalším číslem. 

Všechny proměnné mají datový typ, i když není přímo určený.

## Deklarace datových typů u proměnné

Někdy je zapotřebí deklarovat proměnnou tak, aby obsahovala pouze určitý druh hodnoty. K tomuto účelu slouží datové typy. Deklarace ve VBA probíhá příkazem `Dim` (z anglického Dimension) následovaná názvem proměnné (`<název_proměnné>`). Určení datového typu nastává příkazem `As <datový_typ>`.

```
Dim <název_proměnné> As <datový_typ>
```

> V různých kódech lze vidět definice pomocí **typově deklaračních znaků**, jako jsou například *%, &, @, !, #, $*. Proměnná se pak deklaruje formátem `Dim <název><symbol>` (příklad: `Dim srouby%`). Tato deklarace šetří počet napsaných znaků, protože se nemusí psát `As <datový_typ>` (v příkladě: `Dim srouby As Integer`)

## Významné datové typy

| Datový typ | Význam | Hodnoty | Velikost v paměti |
| :---       | :--- | :--- | :--- |
| **Boolean** | Logická hodnota | True / False (Pravda / Nepravda) | 2 Bajty |
| **Integer** | Celé číslo | -32 768 až 32 767 | 2 Bajty |
| **String** | Text (řetězec znaků) | 0 až 2^32 | 10 Bytů + délka řetězce |
| **Double** | Desetinné číslo | -1,79769313486231E308 až -4,94065645841247E-324 pro záporná čísla <br/> 4,94065645841247E-324 až 1.79769313486232E308 pro kladná čísla | 8 Bajtů |
| Currency | Měna | -922 337 203 685 477,5808 až 922 337 203 685 477,5808 | 8 Bajtů |
| Long | Celé číslo | -2 147 483 648 to 2 147 483 647 | 4 Bajty |
| LongLong | Celé číslo | -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 | 8 Bajtů |
| Date | Datum | 1. ledna 100 až 31. prosince 9999 | 8 Bajtů |
| Byte | Bajt | 0 až 255 | 8 bitů |
| Single | Desetinné číslo | -3.402823E38 do -1.401298E-45 | 4 bajty |
| Decimal | Desetinné číslo | +/-79 228 162 514 264 337 593 543 950 335 bez desetinných míst<br/> +/-7.9228162514264337593543950335 s 28 desetinnými místy| 14 Bajtů |
| *Type* | Uživatelsky definovaný datový typ | Libovolné (dle použitých typů) | Záleží na použitých typech |


## [Ukázka] Deklarace proměnné na základě datových typů ##

Zadání: Je potřeba zjistit počet šroubů na základě zvážené hmnotnosti všech šroubů.

```
' Deklarace promenne predstavujici pocet sroubu
' Neni znama hodnota, ale chceme, aby byla cele cislo
Dim srouby As Integer

'Celkova zvazena hmotnost vsech sroubu
celkova_hmotnost = 10 

' Prumerna hmnotnost jednoho sroubu (konstanta)
hmotnost_sroubu = 0.5

' Ulozeni vypocitane hodnoty sroubu do promenne srouby
srouby = celkova_hmotnost / hmotnost_sroubu

' Vypsani vysledneho poctu sroubu na obrazovku
MsgBox(srouby)
```