Dlouhý variabilní typ
VBA Dlouho datový typ se používá k ukládání velmi dlouhých hodnot dat (-2 147 483 648 až 2 147 483 648). Může ukládat pouze celá čísla (bez desetinných míst).
Chcete -li deklarovat proměnnou Long, použijte příkaz Dim (zkratka pro Dimension):
1 | Dim lngA as Long |
Potom pro přiřazení hodnoty proměnné jednoduše použijte znaménko rovnosti:
1 | lngA = 30 000 |
Uvedení do postupu vypadá takto:
12345678 | Sub lngExample ()'deklarujte dlouhou proměnnou.'Dim lngA as Long'naplňte dlouhou proměnnoulngA = 30 000'zobrazit pole se zprávouMsgBox lngAEnd Sub |
Pokud spustíte výše uvedený kód, zobrazí se následující okno se zprávou.
Datový typ LongLong
Datový typ LongLong je k dispozici pouze v 64bitové verzi sady Microsoft Office. Pokud používáte 32bitovou verzi Office na 64bitovém počítači, tento datový typ nebude k dispozici. Podporuje čísla v rozmezí od -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807.
1 | Dim lngA jako LongLong |
Datový typ LongPtr
LongPtr byl zaveden do VBA za účelem podpory 64bitové verze Microsoft Office. Na 32bitovém systému je považován za Long a v 64bitových systémech je považován za LongLong.
1 | Dim lngA jako LongPtr |
Poznámka: LongPtr není k dispozici v aplikaci Excel 2007 nebo starší.
Desetinné hodnoty a dlouhé datové typy
Dlouhé proměnné nemohou ukládat desetinné hodnoty. Pokud zadáte desetinné číslo dlouhé, bude desetinné číslo zaokrouhleno, aby se odstranilo.
Pokud byste tedy spustili níže uvedený postup:
12345678 | Sub LngExampleB ()'deklarujte dlouhou proměnnou.'Dim lngA as Long'naplňte dlouhou proměnnoulngA = 3524,12'zobrazit pole se zprávouMsgBox lngAEnd Sub |
Desetinná hodnota bude zaokrouhlena dolů a vrátí následující zprávu:
Tento kód však níže:
12345678 | Sub LngExampleB ()'deklarujte dlouhou proměnnou.'Dim lngA as Long'naplňte dlouhou proměnnoulngA = 3524,12'zobrazit pole se zprávouMsgBox lngAEnd Sub |
Vrátí následující pole se zprávou (zaokrouhleno nahoru):
Desetinný / dvojitý datový typ
Pokud chcete uložit desetinné místo, budete muset deklarovat proměnnou, která umožňuje desetinná místa. Můžete použít 3 datové typy - Single, Double nebo Currency.
1 | Dim sngCena jako Single |
1 | Dim dblCena jako dvojnásobek |
1 | Dim curPrice jako měna |
Datový typ Single zaokrouhlí desetinnou čárku mírně odlišně na datový typ double a currency, takže je vhodnější použít double to single pro přesnost. Double může mít až 12 desetinných míst, zatímco Currency a Single mohou mít až 4 desetinná místa.
Deklarujte dlouhou proměnnou na úrovni modulu nebo na globální úrovni
V předchozích příkladech jsme deklarovali proměnnou Long v rámci procedury. Proměnné deklarované pomocí procedury lze použít pouze v rámci této procedury.
Místo toho můžete deklarovat dlouhé proměnné na úrovni modulu nebo na globální úrovni.
Úroveň modulu
Úroveň modulu proměnné jsou deklarovány v horní části modulů kódu pomocí Ztlumit tvrzení.
Tyto proměnné lze použít s jakoukoli procedurou v tomto modulu kódu.
Globální úroveň
Globální úroveň proměnné jsou také deklarovány v horní části modulů kódu. Místo použití Ztlumit prohlášení, použijte Veřejnost prohlášení, které naznačuje, že dlouhá proměnná je k dispozici pro použití v celém vašem projektu VBA.
1 | Veřejný lngA jako dlouhý |
Pokud byste deklarovali dlouhou proměnnou na úrovni modulu a poté ji zkusili použít v jiném modulu, došlo by k chybě.
Pokud byste však k deklaraci dlouhé proměnné použili klíčové slovo Public, k chybě by nedošlo a procedura by běžela perfektně.
Formát dlouho uložen jako řetězec
Může se stát, že budete chtít formátovat dlouhý datový typ na řetězec - například datum nebo budete chtít zobrazit symbol měny.
Chcete -li toho dosáhnout, použijte funkci Formát.
Následující postup:
1234567891011 | Dílčí testLongToString ()'deklarujte proměnnou řetězceDim strDate jako řetězec'deklarujte long a naplňte hodnotuDim lngDate tak dlouholngDate = 44055'převést dlouhý na řetězec formátovaný jako datum.'strDate = Formát (lngDate, "dd mmmm rrrr")'zobrazit výsledekDebug.Print strDateEnd Sub |
vrátí výsledek níže:
a následující postup
1234567891011 | Dílčí testLongtoCurrencyString ()'deklarujte proměnnou řetězceDim strMoney As String'deklarujte long a naplňte hodnotuDim lngValue As LonglngValue = 44055'převeďte dlouhý na řetězec se symbolem měny.'strMoney = Formát (lngValue, "$#, ## 0")'zobrazit výsledekMsgBox strMoneyEnd Sub |
vrátí tento výsledek: