@kp57
on za mně v podstatě odpověděl lubo, ale pokud do toho ještě zatáhneme Value2, tak
Text je jen pro čtení, takže nelze použít
ActiveCell.Text = 5a vrací hodnotu typu String tak, jak je zobrazená v buňce (hrozí tedy případ, který zmiňuje lubo)
Value2 vrací skutečnou hodnotu buňky - pro číslo je to Double, text = String, Chyba = Error nebo logická hodnota = Boolean
Value je stejné jako Value2 s tím, že pokud je hodnota v buňce číslo a buňka obsahuje formát měny, vrací typ Currency nebo pokud je tam Datum, vrací typ Date. Pokud je v buňce formát času, vrací Double (@lubo - označení, že vrací objekt mi přijde nepřesné, protože objekt obsahuje vlastnosti a metody a pokud by to byl objekt, tak při dosazování hodnoty by bylo vyžadováno Set - nicméně to je jen lpění na detailech)
Z toho vyplývá, že není bezpečné používat Text, ale je lepší použít Value a převést si hodnotu na String
Pokud jde o Value vs Value2, tak pokud chcete získat číselnou hodnotu, správnější by bylo používat Value2. Pokud si ovšem definujete proměnné, tak kompilátor stejně převede číslo na typ proměnné, do které hodnotu vkládáte. Takže, pokud je v aktivní buňce číslo ve formátu měny, není rozdíl mezi
Dim a As Long
a = ActiveCell.Valuea
Dim a As Long
a = ActiveCell.Value2V obou případech je a typu Long. Pokud však napíšete
ActiveCell.Value = CCur(5)vloží se hodnota 5 do aktivní buňky a naformátuje se jako měna (u mně se zobrazí
5,00 Kč).
ActiveCell.Value2 = CCur(5)vloží do buňky číslo 5 a musíte si ho formátovat sám.
Čímž se tedy omlouvám za zjednodušenou a ne zcela přesnou předchozí odpověď
Value dá hodnotu buňky jak je vložená (bez formátování) - takže jako číslo
Na závěr - Value vs Value2 mi přijde, že mělo být naopak, ale je to tak jak to je a v podstatě na tom nezáleží. Text jsem nikdy nepoužil a neuvědomuji si ani Value2, protože používám to vysmívané
Option Explicit a mám tedy všechny proměnné definované.
citovat