vba data types numeric
Този урок обяснява различни цифрови и нечислови типове данни, налични във VBA. Също така ще научим за преобразуванията на типа данни :
Всеки ден се натъкваме на много видове данни като име, дата, сметки, цена на стока и др. Всички тези данни принадлежат към определен тип и техните стойности не могат да се отклонят от типа, прикрепен към него. По същия начин VBA има много видове данни, които се използват за извършване на необходимото действие.
В този урок ще научим различните видове данни, използвани във VBA, и ще видим как те ще помогнат при организирането на нашата програма. Ще разгледаме и преобразуването на един тип данни в друг тип данни.
=> Проверете ВСИЧКИ уроци за VBA тук
Какво ще научите:
- Категории типове данни
- Заключение
Категории типове данни
Типът данни казва на компютъра вида на данните, които трябва да се съхраняват с помощта на променлива. Типовете данни са разделени на 2 категории, т.е.числови и нечислови типове данни
Цифрови типове данни
Тези типове се използват за извършване на математически операции като събиране, изваждане и др. Пример, процентно изчисление, цена на акциите, такси, сметки, възраст и др.
В VBA има 7 типа числови типове данни, както е споменато по-долу.
Цифров тип данни | |
---|---|
7 | Десетична |
един | Байт |
две | Цяло число |
3 | Дълго |
4 | Единична |
5 | Двойна |
6 | Валута |
Нека разгледаме накратко всички цифрови типове данни.
# 1) Тип на байтовите данни
Този тип данни изисква само един байт памет. Променливите с тип данни Byte могат да съхраняват стойности от 0 до 255. Стойността на байта по подразбиране е 0. Отрицателните стойности и стойности, по-големи от 255, не са разрешени. В случай, че се опитате да присвоите невалидни стойности, ще бъде върната грешка при препълване.
Синтаксис: Dim Vname As Byte
Тук Vname е име на променлива, а Byte е типът данни на променливата.
Пример:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Резултатът е даден по-долу
# 2) Целочислен тип данни
Тези типове данни се използват за съхраняване на цялата целочислена стойност. Това заема 2 байта памет. Цялото число е един от често използваните типове данни. Те приемат както положителни стойности, така и отрицателни стойности, както и нула. Те имат диапазон между -32 768 и 32 767.
Синтаксис: Dim се запалва като цяло число
Пример:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Резултатът е даден по-долу
# 3) Дълъг тип данни
Това е алтернатива на цял тип данни, който също съхранява цяла цялостна стойност. Той обаче заема повече памет от целочислена променлива, която е 4 байта. Той има диапазон от стойности от -2,147,483,648 до 2,147,483,648
Синтаксис: 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
Ако изпълните горния код с целочислена променлива, ще получите грешка при препълване, защото в Excel има 1048576 реда и типът данни Integer поддържа само до 32,767. Както е показано по-долу, когато типът данни е дълъг, се показва подходящ резултат.
Но когато типът на данните е цяло число, се появява грешка при препълване.
# 4) Десетичен тип данни
Това е точен числов тип данни, който се използва за неговата точност. Това е общият брой на цифрите и броят на цифрите вдясно от десетичната запетая, наречен коефициент на мащабиране.
Във VBA числата се мащабират със степен 10. Подходящо е да се използват тези типове, докато се манипулират големи числа, които се нуждаят от точна стойност. Това заема 14 байта в паметта.
Но променливите не могат да бъдат директно декларирани като десетичен тип данни. За да използвате Decimal, трябва да използвате функцията за преобразуване на CDec. Трябва да използвате тип данни Variant.
Този тип данни съдържа по-долу диапазон от стойности.
+/- 79,228,162,514,264,337,593,543,950,335 без десетична точка
+/- 7.9228162514264337593543950335 с 28 знака след десетичната запетая вдясно от десетичната запетая.
Най-малката приета ненулева стойност е +/- 0,0000000000000000000000000001.
който е най-добрият доставчик на електронна поща
Синтаксис: Dim се запалва като вариант
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Забележка: Функцията TypeName ще даде името на типа данни
Изход:
# 5) Единичен тип данни
Този тип данни се използва за съхраняване на числа с плаваща запетая с една прецизност. Той заема 4 байта памет. Стойността по подразбиране е 0 и съхранява десетични стойности. Можете да използвате удивителен знак (!), Докато декларирате променлива, както е показано в синтаксиса по-долу.
Приетият диапазон от стойности са:
3.402823E38 до -1.401298E-45 за отрицателни стойности
1.401298E-45 до 3.402823E38 за положителни стойности.
Синтаксис
Dim VariableName като Single
или
Затъмнено име на променлива!
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) Двоен тип данни
Данните Double VBA могат да се използват за съхранение на цели числа и фракции. Double се използва за съхраняване на числа с плаваща запетая с двойна прецизност. Той заема 8 байта памет и има набор от стойности.
-1.79769313486231E308 до -4.94065645841247E-324 за отрицателни стойности
4.94065645841247E-324 до 1.79769313486232E308 за положителни стойности
Подобно на единичен тип данни, двойният може също да бъде деклариран, като се използва символ, който е Hash (#), както е показано по-долу.
Синтаксис
Dim VariableName като Double
или
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) Тип данни за валута
Този тип данни може да отнеме до 8 байта размер на съхранение. Този тип данни дава точна стойност, за разлика от единичните и двойните типове данни, които вече обсъдихме, са закръглени. Те са полезни за парични изчисления.
Типът данни за валута може да съхранява както положителни, така и отрицателни стойности. Те могат да съхраняват 15 цифри вляво от десетичната запетая и 4 цифри вдясно.
Разрешеният диапазон е от -922,337,203,685,477.5808 до 922,337,203,685,477.5807. Можете да използвате @, за да декларирате типове данни за валута.
Синтаксис
Dim VariableName като валута
или
Dim VariableName @
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
Изход:
Забележка :Ако стойността на променливата надвишава предоставения диапазон за определен тип данни, ще се появи грешка при препълване.
Помислете за простия пример за байтов тип данни, надвишаващ обхвата му. Същата грешка ще се покаже, ако въведете отрицателни стойности за байтовия тип данни.
Нецифрени типове данни
Това са данни, които не могат да бъдат манипулирани от аритметични оператори. Те се състоят от Text, String, Date и др. По-долу са дадени нецифровите типове данни, поддържани от VBA.
Нецифрен тип данни | |
---|---|
7 | Вариант (символи) |
един | Низ (с фиксирана дължина) |
две | Низ (с променлива дължина) |
3 | Дата |
4 | Булев |
5 | Обект |
6 | Вариант (числа) |
# 1) Булев тип данни
Този тип данни изисква 2 байта памет и може да съхранява само 2 стойности, т.е. TRUE или FALSE. С други думи, булевата променлива може да получи стойност само TRUE или FALSE, алтернативно съответно 1 или 0. Стойността по подразбиране на булева променлива е False.
Синтаксис - Dim Vname As Boolean
Пример:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Тип данни за дата
Този тип данни се използва за представяне на датата и часа. Той има стойности за диапазон от дати от 1 януари 0100 до 31 декември 9999, и стойности за време от 0:00:00 до 23:59:59 и заема 8 байта размер на съхранение.
Синтаксис: Dim се запалва като дата
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Забележка: Функцията Now дава текущата дата и час
# 3) Тип данни с низове
Този тип данни се използва за съхраняване на низова стойност. Низът се дефинира като последователност от символи. Така че можете да използвате тип данни String за съхраняване на текст и може да се използва за съхраняване на номера, специални символи, s и пространства за събития. Стойност на низ трябва да бъде вградена в двойна кавичка „”.
Има 2 типа String тип данни.
# 1) Низ с променлива дължина: Този тип заема 10 байта размер на паметта плюс паметта, необходима за низа, който е дължината на низа. Те имат стойност от 0 до приблизително 2 милиарда.
# 2) Низ с фиксирана дължина: Той заема паметта, равна на дължината на самия низ. Може да варира от 1 до приблизително 65 400 знака
Синтаксис: Затъмнете Vname като низ
Пример:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Тип на обектните данни
Обектът ще има препратка към обект от всякакъв тип, т.е. типът данни на обекта може да сочи към всеки тип данни като низ, двойно, цяло число и т.н. Обектната променлива няма да съдържа стойността, а само сочи към адреса, в който се намират данните съхранява. Той заема 4 байта компютърна памет. Стойността по подразбиране на обект е нулева препратка.
Синтаксис: Затъмнете VName като обект
Пример:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Това ще изчисти всички използвани клетки в текущия лист.
# 5) Вариант на типа данни
Това е универсалният тип данни на VBA, той може да приема всякакви данни цифрови и нечислови. Вариантният тип данни дава по-голяма гъвкавост при работа с данни. Вариантният тип данни използва по-голям размер на съхранение от всеки друг тип данни. Ако не споменете тип данни, VBA ще третира това като променлива Variant.
Има 2 типа типове данни Variant
# 1) Вариант (числа): Това може да съдържа всяка цифрова стойност до диапазона Double. Номерата на Variant заемат 16 байта размер на паметта.
# 2) Вариант (символи): Това може да съдържа същия диапазон като за String с променлива дължина. Символите Variant заемат 22 байта + дължина на низа (24 байта на 64-битови системи)
Синтаксис
Затъмнете VName като вариант
или
Затъмнете VName
Пример:
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
Преобразуване на типа данни
Понякога става необходимо да преобразуваме типа данни на променлива в нещо конкретно в нашия случай на използване.
Пример: Извличате стойност от клетка, която обикновено е низ и следователно трябва да я преобразувате в числов тип данни, преди да извършите каквато и да е аритметична операция. За постигане на това VBA има функции за преобразуване на типове за всички поддържани типове данни.
# 1) CBool
Тази функция се използва за преобразуване на израз в булев тип данни. Ако изразът връща нула, тогава CBool ще върне False, всяка ненулева стойност, CBool връща 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
Горният код ще върне резултатите като False, True, False, True.
Можете да опитате сами, да нарисувате команден бутон за управление на ActiveX, щракнете с десния бутон на мишката -> Преглед на кода и вмъкнете горния код. Кликнете върху бутона Command и резултатът ще се покаже. (Деактивирайте режима на проектиране)
Изход
# 2) CByte
Тази функция се използва за преобразуване на израз в тип байт данни. Не забравяйте след преобразуване, ако обхватът надвишава обхвата, разрешен за Byte, тогава ще се появи грешка за препълване.
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
Забележка: Ако дадете стойността като 255.56. Complier ще върне грешка при препълване
# 3) CCur
Тази функция ще преобразува израз в тип данни за Валута.
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
Тази функция ще преобразува низ в дата. Да предположим, че извличате стойността на Date като String от клетка на Excel, след което трябва да я преобразувате, преди да извършите допълнителни действия. Можете да използвате 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
Функцията CDbl се използва за преобразуване на израз в тип данни 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
Тази функция ще преобразува числова стойност в десетична.
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) CInt
Функцията CInt ще преобразува стойност в цялостен тип данни.
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
Тази функция се използва за преобразуване на стойност в дълъг тип данни
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
Тази функция ще преобразува стойност в единичен тип данни
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
Тази функция се използва за преобразуване на числова стойност в низ тип данни.
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
Тази функция ще преобразува израз в тип данни 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
често задавани въпроси
В # 1) Какъв е типът данни по подразбиране във VBA?
Отговор: Вариантът е този по подразбиране. Ако не дефинирате тип данни на променлива, тогава VBA я третира като вариативна променлива / обект.
В # 2) Какво представлява грешка при несъответствие на типа?
Отговор: Тази грешка ще се задейства, когато декларирате променлива като един тип данни и присвоите неподходяща стойност.
Пример: Декларирайте променлива като Integer и въведете текстова стойност.
В # 3) Как да поправя грешка при препълване?
Отговор: Трябва да се обърнете към диапазона, за който е разрешен определен тип данни, и да сте сигурни, че въвеждате стойност в рамките на разрешения диапазон.
Пример: Байтът позволява само от 0 до 255, ако въведете някаква отрицателна стойност или v стойност по-голяма от 255, тогава ще срещнете грешка при препълване.
въпроси и отговори за интервю за unix за опитни
Заключение
В този урок научихме за типовете данни на VBA, т.е. 7 числови и 7 нецифрени типа данни. Също така обсъдихме как да преобразуваме тип данни от един тип в друг с примери.
=> Проверете тук, за да видите A-Z на уроци за обучение на VBA
Препоръчително четене
- Урок за Excel VBA - Въведение в VBA в Excel
- Типове данни на C ++
- Типове данни на Python
- Типове данни и променливи C # с примери
- Кастинг на тип C #: Изрично и неявно преобразуване на данни с пример
- Типове данни за масив - int масив, двоен масив, масив от низове и т.н.
- Типове данни на MySQL | Какви са различните типове данни в MySQL