Òèïû äàííûõ VBA
Òèïû äàííûõ - ýòî îïðåäåëåííûå âèäû äàííûõ, êîòîðûå VBA ñîõðàíÿåò è ìîæåò ìàíèïóëèðîâàòü.
Òèï Date
VBA èñïîëüçóåò òèï Date äëÿ õðàíåíèÿ äàò è âðåìåíè.
Ïðè ðàáîòå ñ ýòèì òèïîì äàííûõ ñëåäóåò èìåòü ââèäó, ÷òî VBA-òèïû Date íå ÿâëÿþòñÿ òàêèìè æå òèïàìè, êàê â ðàáî÷èõ ëèñòàõ Excel, õîòÿ âî ìíîãîì è ñõîæè ñ íèìè. Íàïðèìåð, áàçîâîé äàòîé äëÿ VBA-òèïà Date ÿâëÿåòñÿ 30 äåêàáðÿ 1899 ãîäà, à â Excel - 1 ÿíâàðÿ 1900 ãîäà.
VBA-òèï Date ÿâëÿåòñÿ òèïîì ïîñëåäîâàòåëüíûõ äàò. VBA èñïîëüçóåò îòðèöàòåëüíûå ÷èñëà äëÿ ïðåäñòàâëåíèÿ äàò ðàíåå áàçîâîé äàòû (30 äåêàáðÿ 1899), è ïîëîæèòåëüíûå - äëÿ äàò ïîñëå áàçîâîé. ×èñëî 0 ïðåäñòàâëÿåò ñàìó äàòó 30.12.1899.
 çíà÷åíèè ïîñëåäîâàòåëüíîé äàòû öåëàÿ ÷àñòü - ýòî îáùåå ÷èñëî äíåé îò áàçîâîé äàòû. Äðîáíàÿ ÷àñòü (öèôðà ñïðàâà îò äåñÿòè÷íîãî çíàêà) - ýòè öèôðû îáîçíà÷àþò âðåìÿ äíÿ êàê ÷àñòü äíÿ. Îäèí ÷àñ - ýòî 1/24 äíÿ, îäíà ìèíóòà - 1/1440 äíÿ, ñåêóíäà - 1/86400 äíÿ.
Ìîæíî âû÷èòàòü îäíó äàòó èç äðóãîé, äîáàâëÿòü ê äàòå èëè âû÷èòàòü ÷èñëà äëÿ èçìåíåíèÿ åå çíà÷åíèÿ.  VBA èìååòñÿ íåñêîëüêî âñòðîåííûõ ïðîöåäóð äëÿ îòäåëüíîãî èçâëå÷åíèÿ ãîäà, ìåñÿöà, äíÿ, ÷àñîâ, ìèíóò è ñåêóíä ïåðåìåííîé òèïà Date.
×èñëà
VBA èìååò øåñòü ðàçëè÷íûõ ÷èñëåííûõ òèïîâ äàííûõ: Byte, Integer, Long, Single, Double, Currency.
Îíè èñïîëüçóþòñÿ äëÿ õðàíåíèÿ ÷èñåë â ðàçëè÷íûõ ôîðìàòàõ, â çàâèñèìîñòè îò êîíêðåòíîãî òèïà.
Öåëûå ÷èñëà
Integer - ýòî öåëîå ÷èñëî áåç äðîáíîé ÷àñòè (öåëûå ÷èñëà íèêîãäà íå ñîäåðæàò äåñÿòè÷íîãî çíàêà, äàæå åñëè äåñÿòè÷íàÿ ÷àñòü ðàâíà íóëþ).
VBA ïðåäîñòàâëÿåò òðè òèïà öåëûõ äàííûõ: Byte, Integer, Long.
Byte - íàèìåíüøèé èç òðåõ òèïîâ öåëûõ äàííûõ, ïðåäíàçíà÷åí äëÿ õðàíåíèÿ ÷èñëå îò 0 äî 255. Ýòîò òèï îáû÷íî èñïîëüçóþò äëÿ õðàíåíèÿ äâîè÷íûõ äàííûõ.
Integer èñïîëüçóåò äèàïàçîí öåëûõ ÷èñåë îò -32768 äî 32767.
Long èñïîëüçóåò äèàïàçîí öåëûõ ÷èñåë îò -2147483648 äî 2147483647.
Byte, Integer, Long òèïû òðåáóþò ìåíüøå ïàìÿòè äëÿ õðàíåíèÿ ÷èñåë, ÷åì äðóãèå ÷èñëåííûå òèïû äàííûõ VBA, à ìàòåìàòè÷åñêèå îïåðàöèè è îïåðàöèè ñðàâíåíèÿ íàä ÷èñëàìè óêàçàííûõ òèïîâ áûñòðåå, ÷åì ýòè æå îïåðàöèè äëÿ ÷èñëåííûõ òèïîâ äàííûõ ñ ïëàâàþùåé òî÷êîé.
VBA àâòîìàòè÷åñêè ïðåîáðàçóåò äàííûå òèïîâ Byte, Integer, Long â òåêñò, êîãäà îíè âûâîäÿòñÿ íà ýêðàí, èñïîëüçóÿ òàêèå ïðîöåäóðû, êàê MsgBox.
×èñëà ñ ïëàâàþùåé òî÷êîé
×èñëà ñ ïëàâàþùåé òî÷êîé ìîãóò èìåòü ëþáîå ÷èñëî öèôð äî èëè ïîñëå äåñÿòè÷íîé òî÷êè (â ïðåäåëàõ ãðàíèö êîíêðåòíîãî òèïà äàííûõ). Èíîãäà èõ íàçûâàþò äåéñòâèòåëüíûìè ÷èñëàìè. Ýòîò òèï äàííûõ èñïîëüçóþò òîãäà, êîãäà òðåáóåòñÿ õðàíèòü ÷èñëà, èìåþùèå äðîáíóþ ÷àñòü.
VBA èìååò äâà òèïà äàííûõ ñ ïëàâàþùåé òî÷êîé: Single, Double.
Single èñïîëüçóåòñÿ äëÿ õðàíåíèÿ:
îòðèöàòåëüíûõ ÷èñåë îò -3,402823*1038 äî -1,401298*10-45
è ïîëîæèòåëüíûõ îò 1,401298*10-45 äî 3,402823*1038.
×èñëà, õðàíèìûå ñ èñïîëüçîâàíèåì òèïà Single, íàçûâàþòñÿ ÷èñëàìè îäèíàðíîé òî÷íîñòè.
Double èñïîëüçóåòñÿ äëÿ õðàíåíèÿ:
îòðèöàòåëüíûõ ÷èñåë îò -1,79769313486232*10308 äî -4,94065645841247*10-324
è ïîëîæèòåëüíûõ îò 4,94065645841247*10-324 äî 1,79769313486232*10308.
×èñëà, õðàíèìûå ñ èñïîëüçîâàíèåì òèïà Double, íàçûâàþòñÿ ÷èñëàìè äâîéíîé òî÷íîñòè.
Ñëåäóåò èìåòü ââèäó, ÷òî îïåðàöèè, âûïîëíÿåìûå íàä ÷èñëàìè ñ ïëàâàþùåé òî÷êîé, íåìíîãî ìåäëåííåå ïîäîáíûõ îïåðàöèé íàä äðóãèìè ÷èñëåííûìè òèïàìè äàííûõ. Êðîìå òîãî, ÷èñëà, õðàíèìûå êàê òèïû äàííûõ ñ ïëàâàþùåé òî÷êîé, ìîãóò áûòü ïîäâåðæåíû îøèáêàì îêðóãëåíèÿ. Åñëè ÷èñëî ñ ïëàâàþùåé òî÷êîé î÷åíü áîëüøîå èëè î÷åíü ìàëîå, VBA îòîáðàæàåò åãî â ýêñïîíåíöèàëüíîì ïðåäñòàâëåíèè.
 ýêñïîíåíöèàëüíîì ïðåäñòàâëåíèè çíà÷åíèÿ çàïèñûâàþòñÿ áåç íà÷àëüíûõ è êîíå÷íûõ íóëåé, è ñëåâà îò äåñÿòè÷íîãî çíàêà èìååòñÿ òîëüêî îäíà öèôðà. ×èñëî óìíîæàåòñÿ íà 10 â íåêîòîðîé ñòåïåíè, ÷òîáû ïîêàçàòü, ãäå íà ñàìîì äåëå íàõîäèòñÿ äåñÿòè÷íûé çíàê. Ñëåäóåò ïîìíèòü, ÷òî îòðèöàòåëüíàÿ ñòåïåíü ïðèâîäèò â ðåçóëüòàòå ê ìåíüøåìó ÷èñëó, à ïîëîæèòåëüíàÿ - ê áîëüøåìó. Âìåñòî íàäñòðî÷íîãî ñèìâîëà ïîêàçàòåëÿ ñòåïåíè èñïîëüçóåòñÿ áóêâà Å:
4.1Å3=4100
2.01Å-2=0.0201
Òèï äàííûõ Currency
Ýòî ÷èñëî ñ ôèêñèðîâàííîé òî÷êîé, ò.å., äåñÿòè÷íàÿ òî÷êà âñåãäà íàõîäèòñÿ â îäíîì è òîì æå ìåñòå - ñïðàâà îò òî÷êè âñåãäà èìåþòñÿ ÷åòûðå öèôðû. Ýòîò òèï äàííûõ èñïîëüçóåòñÿ ïðè äåíåæíûõ âû÷èñëåíèÿõ, êîãäà òðåáóåòñÿ âûñîêàÿ òî÷íîñòü.
Currency õðàíèò ÷èñëà â äèàïàçîíå îò -922337203685477,5808 äî 922337203685477,5807.
Òåêñòîâûå ñòðîêè
Ëþáûå òåêñòîâûå äàííûå, ñîõðàíÿåìûå â VBA, íàçûâàþòñÿ ñòðîêàìè. Äëÿ èõ õðàíåíèÿ ïðåäíàçíà÷åí òèï äàííûõ String.
Ñòðîêà ìîæåò ñîäåðæàòü òåêñòîâûå ñèìâîëû ëþáûõ òèïîâ: áóêâû, öèôðû, çíàêè ïóíêòóàöèè, ðàçäåëèòåëüíûå ñèìâîëû è ïð.
Ñòðîêè âñåãäà çàêëþ÷àþòñÿ â äâîéíûå êàâû÷êè.
Ñóùåñòâóåò äâå êàòåãîðèè ñòðîê: ñòðîêè ïåðåìåííîé äëèíû è ñòðîêè ôèêñèðîâàííîé äëèíû. Ïî óìîë÷àíèþ â VBA âñå ñòðîêè ïåðåìåííîé äëèíû.
Ñëåäóåò ñêàçàòü, ÷òî òèï äàííûõ String ÿâëÿåòñÿ î÷åíü âàæíûì òèïîì, ò.ê., êàê ïðàâèëî, èíôîðìàöèÿ, ââîäèìàÿ ïîëüçîâàòåëåì - ýòî ñòðîêîâûå äàííûå. Êðîìå òîãî, ïîñêîëüêó íà ýêðàíå ìîíèòîðà îòîáðàæàåòñÿ òîëüêî òåêñò, òî âñå äðóãèå òèïû äàííûõ äîëæíû áûòü ïðåîáðàçîâàíû â ñòðîêîâûå äàííûå ïåðåä âûâîäîì íà ýêðàí.
Ëîãè÷åñêèå çíà÷åíèÿ
VBA-ïðîãðàììà ïðèíèìàåò òî èëè èíîå "ðåøåíèå", îñíîâûâàÿñü íà ðàçëè÷íûõ óñëîâèÿõ. Ëþáîå óñëîâèå ìîæåò ïðèíèìàòü äâà çíà÷åíèÿ: True (Èñòèíà) èëè False (Ëîæü). Ëîãè÷åñêèå çíà÷åíèÿ True è False íàçûâàþòñÿ áóëåâñêèìè çíà÷åíèÿìè, à òèï äàííûõ - Boolean.
Áóëåâñêèå çíà÷åíèÿ ïîëó÷àþò êàê ðåçóëüòàò îïåðàöèè ñðàâíåíèÿ. Îïåðàöèè ñðàâíåíèÿ èìååò ìåñòî ïðè ñðàâíåíèè îäíîãî ñ äðóãèì, íàïðèìåð, ïðè ñðàâíåíèè äâóõ ÷èñåë äëÿ îïðåäåëåíèÿ, êîòîðîå èç íèõ áîëüøå.
Òèï äàííûõ Variant
Ýòî îñîáûé òèï äàííûõ, êîòîðûé ìîæåò ñîõðàíÿòü ëþáûå òèïû, çà èñêëþ÷åíèåì òèïà Object. VBA èñïîëüçóåò ýòîò òèï äàííûõ äëÿ âñåõ ïåðåìåííûõ, åñëè òîëüêî îíè íå îáúÿâëåíû ÿâíî.
Äàííûå òèïà Variant ïðèíèìàþò õàðàêòåðèñòèêè îïðåäåëåííîãî òèïà, êîòîðûé îíè ñîõðàíÿþò â äàííûé ìîìåíò. Íàïðèìåð, åñëè äàííûå òèïà Variant ñîäåðæàò ñòðîêîâûå äàííûå, Variant ïðèíèìàåò õàðàêòåðèñòèêè òèïà String. VBA èñïîëüçóåò äëÿ äàííûõ òèïà Variant íàèáîëåå êîìïàêòíîå ïðåäñòàâëåíèå, âîçìîæíîå äëÿ êîíêðåòíûõ çíà÷åíèé, íàõîäÿùèõñÿ â äàííûõ.
Íåñìîòðÿ íà òî, ÷òî òèïû Variant óäîáíû è èçáàâëÿþò îò íåêîòîðîé ÷àñòè ðàáîòû ïðè íàïèñàíèè êîäà, îíè òðåáóþò áîëüøåãî îáúåìà ïàìÿòè, ÷åì ëþáîé äðóãîé òèï äàííûõ, çà èñêëþ÷åíèåì áîëüøèõ ñòðîê. Êðîìå òîãî, ìàòåìàòè÷åñêèå îïåðàöèè è îïåðàöèè ñðàâíåíèÿ íàä äàííûìè òèïà Variant âûïîëíÿþòñÿ ìåäëåííåå, ÷åì ïîäîáíûå îïåðàöèè íàä äàííûìè ëþáîãî äðóãîãî òèïà. Ñëåäóåò èçáåãàòü èñïîëüçîâàíèÿ ïåðåìåííûõ Variant.
Ïîäâåäåì èòîã âûøåñêàçàííîìó:
Òèï äàííûõ |
Îïèñàíèå è äèàïàçîí çíà÷åíèÿ |
Byte |
Õðàíåíèå ïîëîæèòåëüíûõ ÷èñåë îò 0 äî 255 |
Boolean |
Õðàíåíèå ëîãè÷åñêèõ çíà÷åíèé: True, False |
Currency |
Õðàíåíèå ÷èñåë äëÿ òî÷íûõ âû÷èñëåíèé â äèàïàçîíå |
Date |
Õðàíåíèå äàòû è âðåìåíè. |
Double |
Õðàíåíèå ÷èñåë äâîéíîé òî÷íîñòè |
Integer |
Õðàíåíèå öåëûõ ÷èñåë îò -32768 äî 32767 |
Long |
Õðàíåíèå öåëûõ ÷èñåë îò -2147483648 äî 2147483647 |
Single |
Õðàíåíèå ÷èñåë îäèíàðíîé òî÷íîñòè |
String |
Õðàíåíèå òåêñòà äëèíîé äî 2 ìëðä. ñèìâîëîâ |
Variant |
Õðàíåíèå ëþáîãî òèïà äàííûõ |