ВБА Доубле | Како пријавити двоструки тип података у ВБА?
Двоструки тип података Екцел ВБА
ВБА Доубле је врста типа података коју додељујемо за декларисање променљивих, што је побољшана или дужа верзија променљиве типа „Сингле“ и обично се користи за чување дужих децималних места.
Тип података ВБА Интегер увек претвара децималне вредности у најближу целобројну вредност, појединачни тип података може приказати до две цифре децималних места. С друге стране, тип „Доубле“ може да чува вредности из -1,79769313486231Е308 до -4,94065645841247Е324 за негативне вредности и за позитивне бројеве може сачувати вредности из 4.94065645841247Е-324 до 1.79769313486232Е308.
Још важније је што троши 8 бајтова меморије.
Примери употребе ВБА двоструког типа података
Овај ВБА Доубле Екцел образац можете преузети овде - ВБА Доубле Екцел ТемплатеПример # 1
Пре него што видимо пример типа података „Доубле“, погледајмо примере кодова типа „Интегер“ и „Сингле“ у ВБА. Погледајте доленаведени ВБА код.
Шифра:
Суб Интегер_Ек () Дим к Ас Интегер к = 2.569999947164 МсгБок к Енд Суб
Декларисао сам променљиву „к“ као целобројно и за ову променљиву доделио сам вредност као 2,569999947164.
Покренимо овај код ручно или помоћу Екцел пречице Ф5 да бисмо видели коначну вредност у оквиру за поруке у ВБА.
Резултат се приказује као 3 уместо испорученог броја од 2,569999947164. Разлог јер је ВБА претворио број у најближу целобројну вредност, тј. 3.
Када је децимална вредност већа од 0,5, претвориће се у следећу целобројну вредност, а када је децимална вредност мања од 0,51, претвориће се у исподцелу вредност.
Сада ћу променити тип података из целог у један.
Шифра:
Суб Интегер_Ек () Дим к Ас Сингле к = 2.569999947164 МсгБок к Енд Суб
Покрените код преко пречице Ф5 и погледајте који број добијамо овај пут.
Овог пута смо добили резултат као 2,57, па смо овог пута добили две децимале. Првобитна вредност коју смо доделили била је 2,569999947164, тако да је у овом случају, треће, постављена децимална вредност 9, па је ово више од 5, претворила је децималну вредност другог места 6 у 7.
Сада промените тип података из Сингле у Доубле.
Шифра:
Суб Интегер_Ек () Дим к Ас Доубле к = 2.569999947164 МсгБок к Енд Суб
Сада покрените код ручно и погледајте колико цифара добијамо у резултату оквира за поруку.
Ово време је добило све децималне вредности. Под Доубле дата типе можемо доставити до 14 цифара децималних места.
Ако наведете било коју вредност већу од 14 децималних места, претвориће се у најближу вредност. За пример погледајте доњу слику.
Откуцао сам 15 децималних места уместо 14, ако притиснем тастер ентер, вратиће се на само 14 цифара.
Уместо 59 (последње две цифре), добили смо 6, тј. Пошто је последња цифра 9 што је веће од 5, претходни број 5 се претвара у следећу целобројну вредност, тј. 6
Пример # 2
Сада ћу показати како се ради са референцама на ћелије на радном листу. Испод су бројеви које сам унео у радни лист.
Покренимо хватање истих вредности у следеће помоћу ИНТЕГЕР тип података, ЈЕДНО тип података и ДОУБЛЕ тип.
Испод је код за задржавање вредности из колона А до Б помоћу типа података ИНТЕГЕР.
Шифра:
Суб Доубле_Ек () Дим к Ас Интегер Дим ЦеллВалуе Ас Интегер Фор к = 1 То 6 ЦеллВалуе = Целлс (к, 1) .Валуе Целлс (к, 2) .Валуе = ЦеллВалуе Нект к Енд Суб
Покренимо код кроз пречицу Ф5, да видимо које вредности добијамо у колони Б.
Када смо користили Интегер као тип података добили смо све целине, тј. Без децимала.
Сада ћу само променити вба тип података променљиве са целог броја на Сингле.
Шифра:
Суб Доубле_Ек () Дим к Ас Интегер Дим ЦеллВалуе Ас Сингле Фор к = 1 то 6 ЦеллВалуе = Целлс (к, 1) .Валуе Целлс (к, 2) .Валуе = ЦеллВалуе Нект к Енд Суб
Овај код ће дати следећи резултат.
Овај пут смо добили само две децимале.
Сада мења тип података из једног у двоструки.
Шифра:
Суб Доубле_Ек () Дим к Ас Интегер Дим ЦеллВалуе Ас Доубле Фор к = 1 то 6 ЦеллВалуе = Целлс (к, 1) .Валуе Целлс (к, 2) .Валуе = ЦеллВалуе Нект к Енд Суб
Ово ће вратити доњи резултат.
Тачне вредности добили смо из колоне А.
Ствари које треба запамтити
- Доубле је побољшани тип података Сингле типа података.
- Може садржати до 14 децималних места.
- Заузима 8 бајта системске меморије.