vba data types numeric
Овај водич објашњава различите нумеричке и не-нумеричке типове података доступне у ВБА. Такође ћемо научити о конверзијама типа података :
Свакодневно наилазимо на многе врсте података као што су име, датум, рачуни, цена робе итд. Сви ови подаци припадају одређеној врсти и њихове вредности не могу да се одступе од врсте која је за њу приложена. Слично томе, ВБА има много врста података који се користе за извођење потребне радње.
У овом упутству научићемо различите врсте података који се користе у ВБА и видећемо како ће они помоћи у организовању нашег програма. Такође ћемо размотрити претварање једног типа података у други тип података.
=> Проверите СВЕ ВБА водиче овде
Шта ћете научити:
- Категорије типова података
- Закључак
Категорије типова података
Тип података каже рачунару врсту података које треба сачувати помоћу променљиве. Типови података су подељени у 2 категорије, тј. Нумеричке и не-нумеричке врсте података
Нумерички типови података
Ови типови се користе за извођење математичких операција као што су Сабирање, Одузимање итд. Пример, израчун процента, цена акције, накнаде, рачуни, старост итд.
У ВБА постоји 7 врста нумеричких типова података, као што је поменуто у наставку.
Нумерички тип података | |
---|---|
7 | Децималан |
1 | Бајт |
два | Цео број |
3 | Дуго |
4 | Једно |
5 | Доубле |
6 | Валута |
Кратко ћемо погледати све нумеричке типове података.
# 1) Тип података бајта
Овај тип података захтева само један бајт меморије. Променљиве са типом података Бајт може да ускладишти вредности од 0 до 255. Подразумевана вредност бајта је 0. Негативне вредности и вредности веће од 255 нису дозвољене. У случају да покушате да доделите неважеће вредности, вратиће се грешка Преливање.
Синтакса: Дим Внаме као бајт
Овде је Внаме име променљиве, а Бите је тип података променљиве.
Пример:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Излаз је дат у наставку
# 2) Целобројни тип података
Ови типови података користе се за чување целокупне целобројне вредности. Ово заузима 2 бајта меморије. Цео број је један од често коришћених типова података. Они прихватају и позитивне вредности, и негативне вредности, и нулу. Имају распон између -32,768 и 32,767.
како писати ручне испитне случајеве
Синтакса: Дим се пали као целобројно
Пример:
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
Синтакса: Дим внаме Ас Лонг
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Ако извршите горњи код са целобројном променљивом, добићете грешку преливања, јер у програму Екцел има 1048576 редова, а Интегер тип података подржава само до 32.767. Као што је приказано испод када је тип података дугачак, приказује се одговарајући резултат.
Али када је тип података цео број, појављује се грешка преливања.
# 4) Децимални тип података
Ово је тачан нумерички тип података који се користи за његову прецизност. То је укупан број цифара и број цифара десно од децималне тачке који се назива фактор скалирања.
У ВБА бројеви се скалирају степеном 10. Прикладно је користити ове типове док манипулишете великим бројевима којима је потребна прецизна вредност. Ово заузима 14 бајтова у меморији.
Али променљиве се не могу директно декларисати као децимални тип података. Да бисте користили децимале, морате користити функцију конверзије ЦДец. Треба да користите тип података Вариант.
Овај тип података садржи опсег вредности испод.
+/- 79,228,162,514,264,337,593,543,950,335 без децимале
+/- 7.9228162514264337593543950335 са 28 децималних места десно од децимале.
Најмања прихваћена вредност која није нула је +/- 0,0000000000000000000000000001.
Синтакса: Дим се пали као варијанта
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Белешка: Функција ТипеНаме ће дати име типа података
Излаз:
# 5) Појединачни тип података
Овај тип података користи се за чување бројева са покретном тачком са једном прецизношћу. Заузима 4 бајта меморије. Подразумевана вредност је 0 и чува децималне вредности. Можете користити знак узвика (!) Док декларишете променљиву као што је приказано у синтакси испод.
Прихваћени опсег вредности су:
3.402823Е38 до -1.401298Е-45 за негативне вредности
1.401298Е-45 до 3.402823Е38 за позитивне вредности.
Синтакса
Дим ВариаблеНаме као Сингле
или
Дим ВариаблеНаме!
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) Двоструки тип података
Подаци Доубле ВБА могу се користити за држање и целих бројева и разломака. Доубле се користи за чување бројева са покретном тачком са двоструком прецизношћу. Заузима 8 бајтова меморије и има низ вредности.
-1,79769313486231Е308 до -4,94065645841247Е-324 за негативне вредности
4.94065645841247Е-324 до 1.79769313486232Е308 за позитивне вредности
Као и појединачни тип података, и доубле се такође може декларисати помоћу симбола Хасх (#) као што је приказано доле.
Синтакса
Дим ВариаблеНаме као Доубле
или
Дим ВариаблеНаме #
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. Можете користити @ за декларацију типова података валуте.
Синтакса
Затамни име променљиве као валуту
или
Дим ВариаблеНаме @
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
Излаз:
Белешка :Ако вредност променљиве премаши предвиђени опсег за одређени тип података, појавиће се грешка преливања.
Размотримо једноставан пример бајтног типа података који премашује његов опсег. Иста грешка ће се приказати ако унесете негативне вредности за бајт тип података.
Ненумерички типови података
То су подаци којима аритметички оператори не могу манипулисати. Састоје се од текста, низа, датума итд. Доље су наведени не-нумерички типови података подржани у ВБА.
Ненумерички тип података | |
---|---|
7 | Варијанта (карактери) |
1 | Низ (фиксна дужина) |
два | Низ (променљиве дужине) |
3 | Датум |
4 | Боолеан |
5 | Предмет |
6 | Варијанта (бројеви) |
# 1) Логички тип података
Овај тип података захтева 2 бајта меморије и може да сачува само 2 вредности, тј. ТРУЕ или ФАЛСЕ. Другим речима, логичка променљива може добити само вредност ТРУЕ или ФАЛСЕ, алтернативно 1 или 0 респективно. Подразумевана вредност логичке променљиве је Фалсе.
Синтакса - Дим Внаме Ас Боолеан
Пример:
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 бајтова величине складишта.
Синтакса: Дим се пали као датум
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Белешка: Функција Нов даје тренутни датум и време
# 3) Тип података низа
Овај тип података користи се за чување вредности низа. Низ је дефинисан као низ знакова. Тако можете да користите тип података Стринг за чување текста, а можете да користите за чување бројева, посебних знакова, с и простора за догађаје. Вредност низа треба да буде уграђена у двоструки наводник „“.
Постоје 2 типа типа података Стринг.
# 1) Низ променљиве дужине: Овај тип заузима 10 бајта величине меморије плус меморија потребна за низ који је дужине низа. Имају вредност од 0 до приближно 2 милијарде.
# 2) Низ фиксне дужине: Заузима меморију једнаку дужини самог низа. Може се кретати од 1 до приближно 65.400 знакова
Синтакса: Дим Внаме Ас Стринг
Пример:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Тип података о објекту
Објект ће имати референцу на објекат било ког типа, тј. Тип података објекта може усмерити на било који тип података као што су стринг, доубле, интегер итд. Променљива објекта неће садржати вредност, већ само на адресу у којој се подаци ускладиштено. Заузима 4 бајта рачунарске меморије. Подразумевана вредност објекта је нула референца.
Синтакса: Затамни ВНаме као објекат
Пример:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Ово ће очистити све коришћене ћелије у тренутном листу.
# 5) Варијанта података
Ово је универзални тип података ВБА, који може прихватити било коју врсту нумеричких и не-нумеричких података. Различити тип података даје већу флексибилност током рада са подацима. Различити тип података користи већу величину меморије од било ког другог типа података. Ако не помињете тип података, ВБА ће га третирати као варијантну варијаблу.
Постоје 2 типа типова података Вариант
# 1) Варијанта (бројеви): Ово може садржати било коју нумеричку вредност до опсега Доубле. Бројеви Вариант заузимају 16 бајта простора за складиштење.
# 2) Варијанта (знакови): Ово може садржати исти опсег као за низ променљиве дужине. Знакови Вариант заузимају 22 бајта + дужина низа (24 бајта на 64-битним системима)
Синтакса
Затамни ВНаме као варијанту
или
Дим ВНаме
Пример:
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
Конверзија типа података
Понекад је неопходно претворити тип података променљиве у нешто специфично у нашем случају употребе.
Пример: Вредност дохваћате из ћелије, која је обично низ, и стога је морате претворити у нумерички тип података пре извођења било које аритметичке операције. Да би се ово постигло, ВБА има функције претворбе типова за све подржане типове података.
# 1) ЦБоол
Ова функција се користи за претварање израза у логички тип података. Ако израз врати нулу, тада ће ЦБоол вратити Фалсе, било која различита од нуле вредност, ЦБоол враћа Труе.
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
Горњи код ће вратити резултате као Фалсе, Труе, Фалсе, Труе.
Можете покушати сами, нацртати контролно дугме АцтивеКс контроле, десним тастером миша кликните -> Приказ кода и уметните горњи код. Кликните на дугме Цомманд и резултат ће бити приказан. (Онемогућите режим дизајна)
Оутпут
# 2) ЦБите
Ова функција се користи за претварање израза у бајт тип података. Запамтите након конверзије ако опсег премашује опсег дозвољен за бајт, тада ће се појавити грешка преливања.
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. Извршитељ ће вратити грешку преливања
# 3) ЦЦур
Ова функција ће претворити израз у тип података валуте.
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) ЦДате
Ова функција ће претворити низ у датум. Претпоставимо да вредност датума преузмете као низ из екцел ћелије, а затим је морате претворити пре било каквих даљих радњи. Можете користити ЦДате.
како отворити бин датотеке на андроид-у
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) ЦДбл
ЦДбл функција се користи за претварање израза у тип података Доубле.
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) ЦДец
Ова функција ће претворити нумеричку вредност у децималну.
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) ЦИнт
Функција ЦИнт претвориће вредност у целобројни тип података.
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) ЦЛнг
Ова функција се користи за претварање вредности у дугачки тип података
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) ЦСнг
Ова функција ће претворити вредност у један тип података
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) ЦСтр
Ова функција се користи за претварање нумеричке вредности у тип података низа.
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) ЦВар
Ова функција ће претворити израз у тип података Вариант.
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) Који је подразумевани тип података у ВБА?
Одговор: Варијанта је подразумевана. Ако не дефинишете тип података променљиве, тада га ВБА третира као варијаблу променљиве / објекта.
П # 2) Шта је грешка у неусклађености типа?
Одговор: Ова грешка ће се покренути када променљиву декларишете као један тип података и доделите неприкладну вредност.
Пример: Прогласите променљиву као целобројно и унесите текстуалну вредност.
П # 3) Како да поправим грешку преливања?
Одговор: Морате се позвати на опсег који дозвољава одређени тип података и уверите се да сте унели вредност унутар дозвољеног опсега.
Пример: Бајт дозвољава само 0 до 255, ако унесете било коју негативну вредност или в вредност већу од 255, тада наиђете на грешку преливања.
Закључак
У овом упутству смо сазнали о ВБА типовима података, тј. 7 нумеричких и 7 ненумеричких типова података. Такође смо разговарали о томе како конвертовати тип података из једног у други тип са примерима.
=> Погледајте овде да бисте видели А-З ВБА водича за обуку
Препоручено читање
- Водич за Екцел ВБА - Увод у ВБА у програму Екцел
- Типови података Ц ++
- Питхон типови података
- Врсте података и променљиве Ц # са примерима
- Лијевање типа Ц #: експлицитна и имплицитна конверзија података са примером
- Типови података низа - инт низ, двоструки низ, низ жица итд.
- Типови података МиСКЛ | Који су различити типови података у МиСКЛ-у