Tento tutoriál předvede, jak pomocí funkce CLng VBA převést výraz na datový typ s dlouhými čísly.
Funkce CLng
VBA CLng Převést výraz na dlouhý
Funkci VBA CLng lze použít k převodu výrazů na dlouhý datový typ uvnitř kódu VBA.
123456 | Sub CLngExample_1 ()MsgBox CLng (12.34) 'Výsledek je: 12MsgBox CLng (12.345) 'Výsledek je: 12MsgBox CLng (-124) 'Výsledek je: -124MsgBox CLng (-12,34) 'Výsledek je: -12End Sub |
Zaokrouhlování VBA CLng
Funkce VBA CLng zaokrouhlí na desetinnou část typu čísla nebo výrazu podobného číslu. Ve všech případech se však nezaokrouhluje správně. Když je desetinná část 0,5, vrátí funkce VBA CLng nejbližší sudé celé číslo.
1234567891011 | Sub CLngExample_2 ()MsgBox CLng (0,34) 'Výsledek je: 0MsgBox CLng (0,99) 'Výsledek je: 1MsgBox CLng (-124,95) 'Výsledek je: -125MsgBox CLng (1.5) 'Výsledek je: 2MsgBox CLng (2.5) 'Výsledek je: 2End Sub |
K očekávané desítkové hodnotě můžeme přidat relativně malé desetinné číslo, abychom změnili chování funkce VBA CLng na očekávanou.
1234567891011 | Sub CLngExample_3 ()MsgBox CLng (2.5)„Výsledek je: 2MsgBox CLng (2,5 + 0,001)„Výsledek je: 3MsgBox CLng (14.5)„Výsledek je: 14MsgBox CLng (14,5 + 0,001)„Výsledek je: 15End Sub |
Programování VBA | Generátor kódu pracuje pro vás!
VBA CLng Převod strun na dlouhé
Funkci VBA CLng lze použít k převodu řetězců na longy, pokud mají znaky v řetězci význam jako čísla.
123456789101112131415161718 | Sub CLngExample_4 ()Dim StrEx jako řetězecStrEx = "112"MsgBox CLng (StrEx)„Výsledek je: 112StrEx = "112,3"MsgBox CLng (StrEx)„Výsledek je: 112 112,3 je zaokrouhlenoStrEx = "11,2"MsgBox CLng (StrEx)„Výsledek je: 112, je ignorovánStrEx = "$ 112"MsgBox CLng (StrEx)„Výsledek je: 112 $ je ignorovánoEnd Sub |
Chyba běhu VBA CLng 13 Neshoda typu
Použití funkce VBA CLng se řetězci, které obsahují nečíselné znaky nebo znaky, které nemají význam v číselném kontextu, bude mít za následek chybu Run-Time ‘13’: Neshoda typu.
1234567 | Sub CLngExample_5 ()„Níže uvedený kód bude mít za následek chybovou zprávu„CLng nemůže zpracovávat jiné než číselné znakyDim StrEx jako řetězecStrEx = "Ab13"MsgBox CLng (StrEx)End Sub |
Přetečení chyby běhu VBA CLng 6
Použití funkce VBA CLng s řetězci, jejichž výsledkem je hodnota menší nebo větší než očekávané celé číslo, bude mít za následek chybu Run-Time ‘6’: Overflow. Celočíselný datový typ v Excelu má očekávanou hodnotu -2 147 483 648 až 2 147 483 647.
1234567 | Sub CLngExample_6 ()„Níže uvedený kód bude mít za následek chybovou zprávu'CLng neumí zpracovat nečíselné znakyDim StrEx jako řetězecStrEx = "2147483648"MsgBox CLng (StrEx)End Sub |
Už vás nebaví hledat příklady kódu VBA? Zkuste AutoMacro!
Místní nastavení VBA CLng
Funkce VBA CLng má různé chování převádějící řetězce s čárkou nebo tečkou. Používá regionální nastavení operačního systému pro oddělovač desetinných míst a oddělovač číslic.
12345678910111213141516 | Sub CLngExample_7 ()Dim StrEx jako řetězecStrEx = "1,9"MsgBox CLng (StrEx)„Pokud to má regionální nastavení, pak jako oddělovač seskupení„Výsledek je: 19„Pokud to má místní nastavení, pak jako oddělovač desetinných míst'Výsledek je: 2 (2, protože 1,9 se zaokrouhlí)StrEx = "1,9"MsgBox CLng (StrEx)„Pokud to má místní nastavení. pak jako oddělovač seskupení„Výsledek je: 19„Pokud to má místní nastavení. jako oddělovač desetinných míst'Výsledek je: 2 (2, protože 1,9 se zaokrouhlí)End Sub |
Programování VBA | Generátor kódu pracuje pro vás!
VBA CLng Převod booleů na dlouhé
Funkce VBA CLng dokáže převádět booleovské proměnné na longy. Pokud je vyhodnocený výraz pravdivý, výsledná délka je -1 a pokud je vyhodnocený výraz nepravdivý, výsledná délka je 0.
1234567891011121314 | Sub CLngExample_8 ()Dim BoolEx As BooleanBoolEx = PravdaMsgBox CLng (BoolEx)„Výsledek je: -1MsgBox CLng (2 = 2)„Výsledek je: -1BoolEx = FalseMsgBox CLng (BoolEx)'Výsledek je: 0MsgBox CLng (1 = 2)'Výsledek je: 0End Sub |
VBA CLng Převod dat na dlouhé
Funkce VBA CLng dokáže převést proměnnou data na dlouhou. Vrácená hodnota je interní číslo používané Excelem pro zaokrouhlení úložiště data. Pokud je toto číslo mimo očekávané dlouhé limity pro VBA, pak se zobrazí chyba Run-Time ‘6’: Overflow.
123456789101112 | Sub CLngExample_9 ()Dim DateEx As DateDateEx = #2/3/1940 #MsgBox CLng (DateEx)„Výsledek je: 14644DateEx = #8/7/1964 #MsgBox CLng (DateEx)„Výsledek je: 23596DateEx = #3/7/1934 11:32:04 AM #MsgBox CLng (DateEx)„Výsledek je: 12485End Sub |