# Proměnné

Proměnné slouží k ukládání a manipulaci dočasných dat během provádění makra nebo funkce. Proměnná má přiřazený vlastní název (`[název_proměnné]`) a může mít přiřazenou určitou hodnotu. Název proměnné by neměl obsahovat české znaky, ani by neměl začínat číslovkou či podtržítkem.

```vb
' Základní zápis proměnné v implicitní deklaraci. 
[název_proměnné] = [hodnota_proměnné]
```

Platnost proměnné je většinou vymezena v rámci bloku procedury. Po dokončení kódu bloku je vymazána. Jiný případ nastává v momentě, kdy je před proměnou přidáno označení `Static`. Proměnná se z paměti nevymaže a bude si pamatovat její poslední hodnotu, pokud se procedura zavolá znovu.

## Práce s proměnnými

### Čtení proměnné



### Přiřazení hodnoty

Přiřazení hodnoty proměnné se vždy provádí znaménkem rovná se (`=`). Při přiřazení nové hodnoty automaticky zaniká její stará, protože je přepsána. 

```vb
' Přiřazení nové hodnoty proměnné
[název_proměnné] = [nová_hodnota_proměnné]
```

Pokud je zapotřebí použít starou hodnotu, stačí ji přečíst na pravé straně od znaménka ve výpočtu nebo ji před přepisem uložit jako novou hodnotu jiné proměnné.

```vb
' Přiřazení hodnoty přečtené z proměnné pod názvem [název proměnné]
[nová_proměnná] = [název_proměnné]
```




# Datové typy

## Tabulka datových typů

| Datový typ  | Znak | Význam | Hodnoty |
| :---------    | :-: | :-------------- | :-------------------------------------- |
| **`Boolean`** |     | Logická hodnota | `True` (Pravda) nebo `False` (Nepravda) |
| **`Integer`** | `%` | Celé číslo      |                                         |
| **`Double`**  | `#` | Desetinné číslo |                                         |
| **`String`**  | `$` |                 |                                         |
| `Date`        |     | Kalendářní datum a čas | 1. leden 100 až 31. prosinec 9999 |
| `Currency`    |     | Měna (Finance)  | Maximálně 15 číslic a 4 desetinná místa  |
| `Long`        | `&` | Celé číslo      |                                        |
| `Single`      | `!` |                 |                                         |
| `Byte`        |     |  Bajt (8 bitů)  | 0 až 255                                |
| `Decimal`     |     |                 |                                         |
| `Object`      |     |                 |                                         |
| `Variant`     |     |                 |                                         |
| `Type`        |     |                 |                                         |



## Explicitní deklarace proměnné 

Někdy je zapotřebí deklarovat proměnnou tak, aby obsahovala pouze určitý druh hodnoty. 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]`.

```vb
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`)

## Určení datového typu

```vb

TypeName([Proměnná])

```

## [Ukázka] Deklarace proměnných

```vb
' Explicitní deklarace proměnné, přidělen datový typ Integer
Dim a As Integer


' Implicitní deklarace proměnné, nepřidělen datový typ
Dim b

' Přiřazení hodnoty, přidělen datový typ String
b = "text"


' Implicitní deklarace proměnné s přiřazením hodnoty, přidělen datový typ Double
c = 4.2

```
