vba data types numeric
Tento tutoriál vysvetľuje rôzne číselné a nečíselné dátové typy dostupné vo VBA. Dozvieme sa tiež o konverziách dátových typov :
Denne sa stretávame s mnohými typmi údajov, ako sú meno, dátum, poukážky, cena komodity atď. Všetky tieto údaje patria k určitému typu a ich hodnoty sa nemôžu líšiť od typu, ktorý je k nim pripojený. Podobne má VBA mnoho typov údajov, ktoré sa používajú na vykonanie požadovanej akcie.
V tomto tutoriáli sa dozvieme rôzne typy údajov používaných vo VBA a uvidíme, ako pomôžu pri organizácii nášho programu. Taktiež sa pozrieme na prevod jedného dátového typu na iný.
=> Skontrolujte VŠETKY návody VBA tu
Čo sa dozviete:
- Kategórie dátových typov
- Záver
Kategórie dátových typov
Typ údajov informuje počítač o type údajov, ktoré je potrebné uložiť, pomocou premennej. Dátové typy sú rozdelené do 2 kategórií, tj. Numerické a nečíselné dátové typy
Číselné typy údajov
Tieto typy sa používajú na vykonávanie matematických operácií, ako je sčítanie, odčítanie atď. Príklad, percentuálny výpočet, cena akcie, poplatky, zmenky, vek atď.
Vo VBA existuje 7 typov numerických dátových typov, ako je uvedené nižšie.
Číselný typ údajov | |
---|---|
7 | Desatinné miesto |
jeden | Byte |
dva | Celé číslo |
3 | Dlhé |
4 | Slobodný |
5 | Dvojitý |
6 | Mena |
Pozrime sa stručne na všetky číselné typy údajov.
# 1) Bajtový dátový typ
Tento dátový typ vyžaduje iba jeden bajt pamäte. Premenné s dátovým typom Byte môžu ukladať hodnoty od 0 do 255. Predvolená hodnota bajtu je 0. Záporné hodnoty a hodnoty väčšie ako 255 nie sú povolené. V prípade, že sa pokúsite priradiť neplatné hodnoty, vráti sa chyba Overflow.
Syntax: Dim Vname As Byte
Tu Vname je názov premennej a Byte je dátový typ premennej.
Príklad:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Výstup je uvedený nižšie
# 2) Celý údajový typ
Tieto dátové typy sa používajú na uloženie celej celočíselnej hodnoty. Toto zaberá 2 bajty pamäte. Celé číslo je jedným z často používaných dátových typov. Prijímajú kladné aj záporné hodnoty a tiež nulu. Majú rozsah medzi -32 768 až 32 767.
Syntax: Dim sa zapáli ako celé číslo
Prí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ý nižšie
# 3) Dlhý dátový typ
Toto je alternatíva k celočíselnému údajovému typu, ktorý tiež uchováva celú celočíselnú hodnotu. Zaberá však viac pamäte ako celočíselná premenná, ktorá má 4 bajty. Má rozsah hodnôt od -2 147 483 648 do 2 147 483 648
Syntax: 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
Ak vykonáte vyššie uvedený kód s celočíselnou premennou, zobrazí sa chyba pretečenia, pretože v programe Excel je 1048576 riadkov a dátový typ Integer podporuje iba do 32 767. Ako je uvedené nižšie, keď je dátový typ dlhý, zobrazí sa vhodný výsledok.
Ale keď je dátovým typom celé číslo, potom sa vyvolá chyba pretečenia.
# 4) Typ desatinných údajov
Toto je presný číselný údajový typ, ktorý sa používa na jeho presnosť. To je celkový počet číslic a počet číslic vpravo od desatinnej čiarky, ktorý sa nazýva faktor zmeny mierky.
Vo VBA sú čísla škálované silou 10. Je vhodné tieto typy používať pri manipulácii s veľkými číslami, ktoré potrebujú presnú hodnotu. Toto zaberá 14 bajtov v pamäti.
Premenné však nemožno deklarovať priamo ako desatinný dátový typ. Ak chcete používať desatinné číslo, musíte použiť funkciu prevodu CDec. Musíte použiť dátový typ Variant.
Tento dátový typ obsahuje nižšie uvedený rozsah hodnôt.
+/- 79 228 162 514 264 337 593 543 950 335 bez desatinnej čiarky
+/- 7,9228162514264337593543950335 s 28 desatinnými miestami vpravo od desatinnej čiarky.
Najmenšia akceptovaná nenulová hodnota je +/- 0,0000000000000000000000000001.
aký je najlepší DVD ripper
Syntax: Dim sa zapáli ako variant
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: Funkcia TypeName dá údajovému typu názov
Výkon:
# 5) Jeden dátový typ
Tento dátový typ sa používa na ukladanie čísel s pohyblivou rádovou čiarkou s jednou presnosťou. Zaberá 4 bajty pamäte. Predvolená hodnota je 0 a ukladajú sa desatinné hodnoty. Pri deklarovaní premennej, ako je uvedené v nižšie uvedenej syntaxi, môžete použiť výkričník (!).
Prijatý rozsah hodnôt je:
3,402823E38 až -1,401298E-45 pre záporné hodnoty
1,401298E-45 až 3,402823E38 pre kladné hodnoty.
Syntax
Dim VariableName ako Single
alebo
Stlmiť názov premennej!
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ý dátový typ
Údaje Double VBA možno použiť na uchovanie celých čísel aj zlomkov. Double slúži na ukladanie čísel s pohyblivou rádovou čiarkou s dvojnásobnou presnosťou. Zaberá 8 bajtov pamäte a má celý rad hodnôt.
-1,79769313486231E308 až -4,94065645841247E-324 pre záporné hodnoty
4,94065645841247E-324 až 1,79769313486232E308 pre kladné hodnoty
Rovnako ako dátový typ Single, aj double možno deklarovať pomocou symbolu, ktorý je Hash (#), ako je uvedené nižšie.
Syntax
Stlmiť názov premennej ako dvojnásobok
alebo
Dim premennáName #
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) Menový dátový typ
Tento dátový typ môže trvať až 8 bajtov veľkosti úložiska. Tento typ dát dáva presnú hodnotu, na rozdiel od jednoduchých a dvojitých dátových typov, o ktorých sme už hovorili, sú zaokrúhlené. Sú užitočné pre peňažné výpočty.
Dátový typ meny môže ukladať kladné aj záporné hodnoty. Môžu obsahovať 15 číslic naľavo od desatinného miesta a 4 číslice vpravo.
Povolený rozsah je -922 337 203 685 477 5708 až 922 337 203 685 477 57807. Môžete použiť @ na deklaráciu dátových typov Mena.
Syntax
Dim VariableName ako mena
alebo
Stlmiť premennúName @
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ýkon:
Poznámka :Ak hodnota premennej prekročí poskytnutý rozsah pre konkrétny dátový typ, bude vyvolaná chyba pretečenia.
Zvážte jednoduchý príklad bytového dátového typu presahujúceho jeho rozsah. Rovnaká chyba sa zobrazí, ak zadáte záporné hodnoty pre bajtový dátový typ.
Nečíselné dátové typy
Toto sú údaje, s ktorými nemôžu manipulovať aritmetické operátory. Skladajú sa z textu, reťazca, dátumu atď. Ďalej sú uvedené nečíselné dátové typy podporované vo VBA.
Nečíselný dátový typ | |
---|---|
7 | Variant (znaky) |
jeden | Reťazec (pevná dĺžka) |
dva | Reťazec (variabilná dĺžka) |
3 | Dátum |
4 | Boolovský |
5 | Objekt |
6 | Variant (čísla) |
# 1) Boolovský dátový typ
Tento dátový typ vyžaduje 2 bajty pamäte a môže ukladať iba 2 hodnoty, tj. TRUE alebo FALSE. Inými slovami, boolovská premenná môže získať iba hodnotu TRUE alebo FALSE, alternatívne 1 alebo 0. Predvolená hodnota boolovskej premennej je False.
Syntax - Dim Vname As Boolean
Prí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) Dátumový dátový typ
Tento dátový typ sa používa na vyjadrenie dátumu a času. Má hodnoty rozsahu dátumov od 1. januára 0100 do 31. decembra 9999 a časové hodnoty od 0:00:00 do 23:59:59 a zaberá 8 bajtov veľkosti úložiska.
Syntax: Dim zapáli ako dátum
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Poznámka: Teraz funkcia dáva aktuálny dátum a čas
# 3) Reťazcový údajový typ
Tento dátový typ sa používa na ukladanie hodnoty reťazca. Reťazec je definovaný ako postupnosť znakov. Môžete teda použiť dátový typ String na ukladanie textu a dajú sa použiť na ukladanie čísel, špeciálnych znakov, s a priestorov na udalosti. Hodnota reťazca by mala byť vložená do dvojitých úvodzoviek „“.
Existujú 2 typy dátového typu String.
# 1) Reťazec s premennou dĺžkou: Tento typ zaberá 10 bajtov veľkosti pamäte plus pamäť požadovanú pre reťazec, ktorý má dĺžku reťazca. Majú rozsahovú hodnotu od 0 do približne 2 miliárd.
# 2) Reťazec s pevnou dĺžkou: Zaberá pamäť rovnú dĺžke samotného reťazca. Môže mať od 1 do približne 65 400 znakov
Syntax: Dim Vname ako reťazec
Príklad:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Typ údajov objektu
Objekt bude mať odkaz na objekt ľubovoľného typu, tj. Objektový dátový typ môže ukazovať na akýkoľvek dátový typ, ako je reťazec, dvojitý, celé číslo atď. Premenná objektu nebude obsahovať túto hodnotu, odkazuje iba na adresu, na ktorej sú údaje uložené. Zaberá 4 bajty pamäte počítača. Predvolená hodnota objektu je nulová referencia.
Syntax: Dim VName ako objekt
Príklad:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Týmto sa vymažú všetky použité bunky v aktuálnom hárku.
# 5) Variantný dátový typ
Toto je univerzálny dátový typ VBA, môže akceptovať akýkoľvek druh číselných aj nečíselných údajov. Varianta dátového typu poskytuje väčšiu flexibilitu pri práci s údajmi. Varianta dátového typu využíva väčšiu veľkosť úložiska ako akýkoľvek iný dátový typ. Ak neuvádzate údajový typ, bude ho VBA považovať za premennú typu Variant.
Existujú 2 typy dátových variantov
# 1) Variant (čísla): Môže obsahovať akúkoľvek číselnú hodnotu až do rozsahu Double. Čísla variantov zaberajú 16 bajtov úložnej veľkosti.
# 2) Variant (znaky): Môže obsahovať rovnaký rozsah ako pre reťazec s premennou dĺžkou. Znaky Variant zaberajú 22 bajtov + dĺžka reťazca (24 bajtov v 64-bitových systémoch)
Syntax
Dim VName ako variant
alebo
Dim VName
Prí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
Prevod dátového typu
Niekedy je v našom prípade použitia potrebné previesť dátový typ premennej na niečo konkrétne.
Príklad: Hodnotu načítate z bunky, čo je zvyčajne reťazec, a preto ju pred vykonaním akejkoľvek aritmetickej operácie musíte previesť na číselný údajový typ. Na dosiahnutie tohto cieľa má VBA funkcie prevodu typov pre všetky podporované dátové typy.
# 1) CBool
Táto funkcia sa používa na prevod výrazu na boolovský dátový typ. Ak výraz vráti nulu, potom CBool vráti hodnotu False, akúkoľvek nenulovú hodnotu, CBool vráti hodnotu 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
Vyššie uvedený kód vráti výsledky ako False, True, False, True.
Môžete to vyskúšať sami, nakreslite príkazové tlačidlo ovládacieho prvku ActiveX, kliknite pravým tlačidlom myši -> Zobraziť kód a vložte vyššie uvedený kód. Kliknite na príkazové tlačidlo a zobrazí sa výsledok. (Zakázať režim návrhu)
Výkon
# 2) CByte
Táto funkcia sa používa na prevod výrazu na dátový typ Byte. Pamätajte si, že po prevode, ak rozsah presahuje povolený rozsah pre Byte, bude vyvolaná chyba pretečenia.
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: Ak dáte hodnotu 255,56. Complier vráti chybu pretečenia
# 3) CCur
Táto funkcia prevedie výraz na dátový typ Mena.
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
Táto funkcia prevedie reťazec na Dátum. Predpokladajme, že načítate hodnotu dátumu ako reťazec z bunky programu Excel, potom ju musíte pred vykonaním akejkoľvek ďalšej akcie previesť. Môžete použiť 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
Funkcia CDbl sa používa na prevod výrazu na dátový 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
Táto funkcia prevedie číselnú hodnotu na desatinnú.
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 )ntnt
Funkcia CInt prevedie hodnotu na celočíselný dátový 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
Táto funkcia sa používa na prevod 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
Táto funkcia prevedie hodnotu na jeden dátový 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
Táto funkcia sa používa na prevod číselnej hodnoty na dátový typ reťazca.
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
Táto funkcia prevedie výraz na dátový 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) Aký je predvolený dátový typ vo VBA?
Odpoveď: Variant je predvolený. Ak nedefinujete dátový typ premennej, VBA s ním zaobchádza ako s variantnou premennou / objektom.
Otázka 2) Čo je chyba nesúladu typov?
Odpoveď: Táto chyba sa spustí, keď deklarujete premennú ako jeden dátový typ a priradíte nevhodnú hodnotu.
Príklad: Deklarujte premennú ako celé číslo a zadajte textovú hodnotu.
Otázka 3) Ako opravím chybu pretečenia?
Odpoveď: Musíte sa obrátiť na rozsah, v ktorom je povolený konkrétny dátový typ, a nezabudnite zadať hodnotu v rámci povoleného rozsahu.
Príklad: Bajt umožňuje iba 0 až 255, ak zadáte zápornú hodnotu alebo hodnotu v viac ako 255, narazíte na chybu pretečenia.
čo je súbor .bin?
Záver
V tomto tutoriáli sme sa dozvedeli o dátových typoch VBA, t. J. 7 číselných a 7 nečíselných dátových typov. Na príkladoch sme tiež diskutovali o tom, ako prevádzať dátový typ z jedného typu na druhý.
=> Ak chcete vidieť A-Z výučbových kurzov VBA, kliknite sem
Odporúčané čítanie
- Výukový program pre Excel VBA - Úvod do VBA v programe Excel
- Dátové typy C ++
- Dátové typy v Pythone
- C # dátové typy a premenné s príkladmi
- C # Type Casting: Explicitná a implicitná konverzia dát s príkladom
- Typy údajov poľa - int pole, dvojité pole, pole reťazcov atď.
- Dátové typy MySQL Aké sú rôzne typy údajov v MySQL