vba data types numeric
Tento kurz vysvětluje různé numerické a nečíselné datové typy dostupné ve VBA. Dozvíme se také o převodech datových typů :
Každý den se setkáváme s mnoha typy dat, jako je jméno, datum, směnky, cena komodity atd. Všechna tato data patří určitému typu a jejich hodnoty se nemohou odvíjet od typu, který je k nim připojen. Podobně má VBA mnoho typů dat, která se používají k provedení požadované akce.
V tomto tutoriálu se naučíme různé typy dat používaných ve VBA a uvidíme, jak vám pomohou při organizaci našeho programu. Podíváme se také na převod jednoho datového typu na jiný datový typ.
=> Zkontrolujte VŠECHNY výukové programy VBA zde
Co se naučíte:
- Kategorie datových typů
- Závěr
Kategorie datových typů
Datový typ sděluje počítači typ dat, která je třeba uložit pomocí proměnné. Datové typy jsou rozděleny do 2 kategorií, tj. Numerické a nečíselné datové typy
Číselné datové typy
Tyto typy se používají k provádění matematických operací, jako je sčítání, odčítání atd. Příklad, výpočet procenta, cena akcií, poplatky, směnky, věk atd.
Ve VBA existuje 7 typů numerických datových typů, jak je uvedeno níže.
Číselný datový typ | |
---|---|
7 | Desetinný |
1 | Byte |
dva | Celé číslo |
3 | Dlouho |
4 | Singl |
5 | Dvojnásobek |
6 | Měna |
Pojďme se krátce podívat na všechny numerické datové typy.
# 1) Bajtový datový typ
Tento datový typ vyžaduje pouze jeden bajt paměti. Proměnné s datovým typem Byte mohou ukládat hodnoty od 0 do 255. Výchozí hodnota bajtu je 0. Záporné hodnoty a hodnoty větší než 255 nejsou povoleny. V případě, že se pokusíte přiřadit neplatné hodnoty, bude vrácena chyba Přetečení.
Syntaxe: Dim Vname As Byte
Zde Vname je název proměnné a Byte je datový typ proměnné.
Příklad:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Výstup je uveden níže
# 2) Celočíselný datový typ
Tyto datové typy se používají k uložení celé celočíselné hodnoty. To zabírá 2 bajty paměti. Celé číslo je jedním z často používaných datových typů. Přijímají kladné i záporné hodnoty a také nulu. Mají rozmezí mezi -32 768 až 32 767.
Syntaxe: Dim se zapálí jako celé číslo
Příklad:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Výstup je uveden níže
příklad sloučení řazení c ++
# 3) Dlouhý datový typ
Toto je alternativa k celočíselnému datovému typu, který také ukládá celou celočíselnou hodnotu. Zabírá však více paměti než celočíselná proměnná, která má 4 bajty. Má rozsah hodnot od -2 147 483 648 do 2 147 483 648
Syntaxe: Dim vname As Long
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Pokud provedete výše uvedený kód s celočíselnou proměnnou, zobrazí se chyba přetečení, protože v aplikaci Excel existuje 1048576 řádků a datový typ Integer podporuje pouze do 32 767. Jak je uvedeno níže, když je datový typ dlouhý, zobrazí se vhodný výsledek.
Ale když je datový typ celé číslo, je vyvolána chyba přetečení.
# 4) Desetinný datový typ
Toto je přesný číselný datový typ, který se používá pro jeho přesnost. To je celkový počet číslic a počet číslic napravo od desetinné čárky nazývaný faktor měřítka.
Ve VBA jsou čísla škálována silou 10. Je vhodné tyto typy používat při manipulaci s velkými čísly, která vyžadují přesnou hodnotu. To zabírá 14 bajtů v paměti.
Proměnné ale nelze přímo deklarovat jako desítkový datový typ. Chcete-li použít Decimal, musíte použít funkci převodu CDec. Musíte použít datový typ Variant.
Tento datový typ obsahuje níže uvedený rozsah hodnot.
+/- 79 228 162 514 264 337 593 543 950 335 bez desetinné čárky
+/- 7,9228162514264337593543950335 s 28 desetinnými místy napravo od desetinného místa.
Nejmenší akceptovaná nenulová hodnota je +/- 0,0000000000000000000000000001.
Syntaxe: Dim se zapaluje jako varianta
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Poznámka: Funkce TypeName dá název datového typu
Výstup:
# 5) Jeden datový typ
Tento datový typ se používá k ukládání čísel s plovoucí desetinnou čárkou s jednou přesností. Zabírá 4 bajty paměti. Výchozí hodnota je 0 a ukládá desítkové hodnoty. Při deklaraci proměnné, jak je znázorněno v níže uvedené syntaxi, můžete použít vykřičník (!).
Přijatý rozsah hodnot je:
3,402823E38 až -1,401298E-45 pro záporné hodnoty
1,401298E-45 až 3,402823E38 pro kladné hodnoty.
Syntax
Dim VariableName jako Single
nebo
Ztlumit název proměnné!
Sub SingleDataTypeTest() Dim SingleVal1 As Single Dim SingleVal2! SingleVal1 = 123 SingleVal2 = 333.44 MsgBox ('Data type of SingleVal1 is ' & TypeName(SingleVal1) & ' with value ' & SingleVal1 & ' and datatype of SingleVal2 is ' & TypeName(SingleVal2) & ' with value ' & SingleVal2) End Sub
# 6) Dvojitý datový typ
Data Double VBA lze použít k uložení celých čísel i zlomků. Double se používá k ukládání čísel s plovoucí desetinnou čárkou s dvojitou přesností. Zabírá 8 bajtů paměti a má řadu hodnot.
-1,79769313486231E308 až -4,94065645841247E-324 pro záporné hodnoty
4,94065645841247E-324 až 1,79769313486232E308 pro kladné hodnoty
Stejně jako Single datový typ, double lze také deklarovat pomocí symbolu, který je Hash (#), jak je znázorněno níže.
Syntax
Dim VariableName jako Double
nebo
Dim VariableName #
Sub DoubleDataTypeTest() Dim douValue As Double Dim douVal1# douValue = 100.21 douVal1 = 333.44 MsgBox ('Data type of douValue is ' & TypeName(douValue) & ' with value ' & douValue & ' and datatype of douVal1 is ' & TypeName(douVal1) & ' with value ' & douVal1) End Sub
# 7) Měnový datový typ
Tento datový typ může trvat až 8 bajtů velikosti úložiště. Tento typ dat poskytuje přesnou hodnotu, na rozdíl od jednoduchých a dvojitých datových typů, o kterých jsme již mluvili, jsou zaokrouhleny. Jsou užitečné pro peněžní výpočty.
Měnový datový typ může ukládat kladné i záporné hodnoty. Do nich lze uložit 15 číslic nalevo od desetinné čárky a 4 číslice vpravo.
Povolený rozsah je -922 337 203 685 477 5708 až 922 337 203 685 477 57807. Pomocí @ můžete deklarovat datové typy měny.
Syntax
Dim VariableName jako měna
nebo
Ztlumit název proměnné @
Sub CurrencyDataTypeTest() Dim val1 As Currency Dim Val2@ val1 = 123 Val2 = 333.44 MsgBox ('Data type of Val1 is ' & TypeName(val1) &” with value “ &val1 & ' and datatype of Val2 is ' & TypeName(Val2) & “ with value “ &val2) End Sub
Výstup:
Poznámka :Pokud hodnota proměnné překročí zadaný rozsah pro konkrétní datový typ, bude vyvolána chyba přetečení.
Zvažte jednoduchý příklad bytového datového typu překračujícího jeho rozsah. Stejná chyba se zobrazí, pokud zadáte záporné hodnoty pro datový typ bytu.
Numerické datové typy
Jedná se o data, která nelze manipulovat aritmetickými operátory. Zahrnují text, řetězec, datum atd. Níže jsou uvedeny nečíselné datové typy podporované ve VBA.
Nečíselný datový typ | |
---|---|
7 | Varianta (znaky) |
1 | Řetězec (pevná délka) |
dva | Řetězec (proměnná délka) |
3 | datum |
4 | Booleovský |
5 | Objekt |
6 | Varianta (čísla) |
# 1) Booleovský datový typ
Tento datový typ vyžaduje 2 bajty paměti a může ukládat pouze 2 hodnoty, tj. PRAVDA nebo NEPRAVDA. Jinými slovy, logická proměnná může získat hodnotu pouze TRUE nebo FALSE, alternativně 1 nebo 0. Výchozí hodnota logické proměnné je False.
Syntaxe - Dim Vname As Boolean
Příklad:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Datový typ data
Tento datový typ se používá k reprezentaci data a času. Má hodnoty období od 1. ledna 0100 do 31. prosince 9999 a časové hodnoty od 0:00:00 do 23:59:59 a zabírá 8 bajtů velikosti úložiště.
Syntax: Dim zapálí jako datum
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Poznámka: Funkce nyní udává aktuální datum a čas
# 3) Řetězcový datový typ
Tento datový typ se používá k ukládání hodnoty řetězce. Řetězec je definován jako posloupnost znaků. Můžete tedy použít datový typ String k ukládání textu a lze jej použít k ukládání čísel, speciálních znaků a prostorů událostí. Řetězcová hodnota by měla být vložena do uvozovek „“.
Existují 2 typy datového typu String.
# 1) Řetězec s proměnnou délkou: Tento typ zabírá 10 bajtů velikosti úložiště plus paměť požadovanou pro řetězec, který má délku řetězce. Mají rozsahovou hodnotu od 0 do přibližně 2 miliard.
# 2) Řetězec s pevnou délkou: Zabírá paměť rovnou délce samotného řetězce. Může se pohybovat od 1 do přibližně 65 400 znaků
Syntax: Dim Vname jako řetězec
Příklad:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Datový typ objektu
Objekt bude mít odkaz na objekt jakéhokoli typu, tzn. Datový typ objektu může ukazovat na jakýkoli datový typ, jako je řetězec, dvojitý, celé číslo atd. Proměnná objektu nebude obsahovat hodnotu, ukazuje pouze na adresu, na které jsou data uloženy. Zabírá 4 bajty paměti počítače. Výchozí hodnota objektu je nulová reference.
Syntax: Dim VName jako objekt
Příklad:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Tím se vymažou všechny použité buňky v aktuálním listu.
# 5) Varianta datového typu
Toto je univerzální datový typ VBA, může přijímat jakýkoli druh datových číselných i nečíselných. Varianta datového typu poskytuje větší flexibilitu při práci s daty. Varianta datového typu používá větší velikost úložiště než jakýkoli jiný datový typ. Pokud nezmiňujete datový typ, bude to VBA považovat za proměnnou varianty.
Existují 2 typy datových variant
# 1) Varianta (čísla): Může obsahovat jakoukoli číselnou hodnotu až do rozsahu Double. Čísla variant zabírají 16 bajtů velikosti úložiště.
# 2) Varianta (znaky): To může obsahovat stejný rozsah jako pro řetězec s proměnnou délkou. Znaky varianty zabírají 22 bytů + délka řetězce (24 bytů v 64bitových systémech)
Syntax
Dim VName jako varianta
nebo
Dim VName
Příklad:
Sub VariantDataTypeTest() Dim EmpName As Variant Dim DOB Dim Salary As Variant EmpName = 'Jofn kim' DOB = #10/3/2020# Salary = 55000 MsgBox EmpName & ' ' & DOB & ' ' & Salary End Sub
Převod datového typu
Někdy je v našem případě použití nutné převést datový typ proměnné na něco konkrétního.
Příklad: Načtete hodnotu z buňky, což je obvykle řetězec, a proto ji před provedením jakékoli aritmetické operace musíte převést na číselný datový typ. K dosažení tohoto cíle má VBA funkce převodu typů pro všechny podporované datové typy.
# 1) CBool
Tato funkce se používá k převodu výrazu na booleovský datový typ. Pokud výraz vrátí nulu, pak CBool vrátí False, jakoukoli nenulovou hodnotu, CBool vrátí True.
Sub CBooleanTest() Dim val1 As Integer Dim strval2 As String val1 = 0 MsgBox CBool(val1) val1 = 177 MsgBox CBool(val1) strval2 = 'A' MsgBox CBool(strval2 = 'B') MsgBox CBool(strval2 'B') End Sub
Výše uvedený kód vrátí výsledky jako False, True, False, True.
Můžete to vyzkoušet sami, nakreslit ovládací příkazové tlačítko ActiveX, kliknout pravým tlačítkem -> Zobrazit kód a vložit výše uvedený kód. Klikněte na příkazové tlačítko a zobrazí se výsledek. (Zakázat režim návrhu)
Výstup
# 2) CByte
Tato funkce se používá k převodu výrazu na datový typ Byte. Pamatujte si, že po převodu, pokud rozsah překročí rozsah povolený pro Byte, bude vyvolána chyba přetečení.
Sub cbyteTest() Dim val1 As Double Dim val2 val1 = 125.5678 val2 = CByte(val1) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
Poznámka: Pokud zadáte hodnotu 255,56. Complier vrátí chybu přetečení
# 3) CCur
Tato funkce převede výraz na datový typ Měna.
Sub ccurTest() Dim val1 As Integer Dim val2 val1 = 5544 val2 = CCur(val1 / 5) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
# 4) CDate
Tato funkce převede řetězec na Date. Předpokládejme, že načtete hodnotu Date jako String z buňky aplikace Excel, pak ji musíte před provedením jakékoli další akce převést. Můžete použít CDate.
Sub CDateTest() Dim val1, val2, val3 As String Dim Res1, Res2, Res3 val1 = '12:21' val2 = '23/09 12:12' val3 = 'Sep 23, 2020' Res1 = CDate(val1) Res2 = CDate(val2) Res3 = CDate(val3) MsgBox 'Date of val1 is : ' & Res1 & ' Date of val2 is : ' & Res2 & ' Date of val3 is ' & Res3 End Sub
# 5) CDbl
Funkce CDbl se používá k převodu výrazu na datový typ Double.
Sub CDblTest() Dim val1 As String Dim val2 As Integer Dim Res1 val1 = 10000.12345 val2 = 1222.222 Res1 = CDbl(val1) Res2 = CDbl(val2) MsgBox 'Double value after converting String : ' & Res1 & ' Double value after converting Integer : ' & Res2 End Sub
# 6) CDec
Tato funkce převede číselnou hodnotu na desítkovou.
Sub CDecTest() Dim Val1 As Currency Dim Result Val1 = 1234566.56366 Result = CDec(Val1) ‘Result is 1234566.5637 MsgBox 'Decimal Data Type Value : ' & Result End Sub
# 7) Dál
Funkce CInt převede hodnotu na celočíselný datový typ.
Sub CintTest() Dim Val1 As Double Dim Result Val1 = 2345.5678 Result = CInt(Val1) 'Result is 2346 MsgBox 'Integer value of converting is : ' & Result & ' and datatype of Result is ' & TypeName(Result) End Sub
# 8) CLng
Tato funkce se používá k převodu hodnoty na Long Data Type
Sub cLngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 45457.35 Val2 = 45457.65 Res1 = CLng(Val1) Res2 = CLng(Val2) MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 9) CSng
Tato funkce převede hodnotu na jeden datový typ
Sub cSngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 75.3421115 Val2 = 75.3421555 Res1 = CSng(Val1) ' Result is 75.34211. Res2 = CSng(Val2) ' Result is 75.34216. MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 10) CStr
Tato funkce se používá k převodu číselné hodnoty na datový typ řetězce.
Sub CStrTest() Dim Val1 As Double Dim Result Val1 = 123.123 Result = CStr(Val1) 'Result will be 123.123 MsgBox 'Result of Val1 is ' & Val1 End Sub
# 11) CVar
Tato funkce převede výraz na datový typ Variant.
Sub CVarTest() Dim Val1 As Integer Dim Result Val1 = 1234 Result = CVar(Val1 & 1.12) ' Result will be 12341.12 MsgBox 'Result is ' & Result End Sub
Často kladené otázky
Otázka č. 1) Jaký je výchozí datový typ ve VBA?
Odpovědět: Varianta je výchozí. Pokud nedefinujete datový typ proměnné, bude jej VBA považovat za variantní proměnnou / objekt.
Otázka 2) Co je chyba Neshoda typu?
Odpovědět: Tato chyba se aktivuje, když deklarujete proměnnou jako jeden datový typ a přiřadíte nevhodnou hodnotu.
Příklad: Deklarujte proměnnou jako celé číslo a zadejte textovou hodnotu.
Otázka č. 3) Jak mohu opravit chybu přetečení?
Odpovědět: Musíte odkazovat na rozsah, ve kterém je povolen konkrétní datový typ, a ujistěte se, že zadáváte hodnotu v povoleném rozsahu.
Příklad: Byte umožňuje pouze 0 až 255, pokud zadáte zápornou hodnotu nebo hodnotu v více než 255, dojde k chybě přetečení.
Závěr
V tomto kurzu jsme se dozvěděli o datových typech VBA, tj. 7 číselných a 7 nečíselných datových typů. Také jsme diskutovali, jak převést datový typ z jednoho typu na jiný pomocí příkladů.
=> Podívejte se sem a podívejte se na A-Z výukových kurzů VBA
Doporučené čtení
- Výukový program Excel VBA - Úvod do VBA v aplikaci Excel
- Datové typy C ++
- Datové typy Pythonu
- Datové typy a proměnné C # s příklady
- Casting typu C #: Explicitní a implicitní převod dat s příkladem
- Datové typy polí - int pole, dvojité pole, pole řetězců atd.
- MySQL datové typy | Jaké jsou různé datové typy v MySQL