HTML, Excel, Word, SEOÎñíîâû VBA ⇒ Òèïû äàííûõ VBA

Îñíîâû VBA

Ñàìîó÷èòåëü vba: Òåîðèÿ
..Ïåðâûé ìàêðîñ â Word
..Ýòàïû çàïèñè ìàêðîñà
..Çàïèñü ìàêðîñà â Word
..Çàïèñü ìàêðîñà â Excel
..Êîä ìàêðîñà
..Âûïîëíåíèå ìàêðîñà
..Òèïû äàííûõ VBA
..Ïåðåìåííûå VBA
..Êîíñòàíòû VBA
..Ñîâìåñòèìîñòü òèïîâ äàííûõ
..Àðèôìåòè÷åñêèå îïåðàòîðû
..Ëîãè÷åñêèå îïåðàòîðû
..Ñòðîêîâûå îïåðàòîðû
..Ôóíêöèè VBA ÷.1
..Ôóíêöèè VBA ÷.2
..Ïðèìåðû èñïîëüçîâàíèÿ ôóíêöèé
..Ôóíêöèè host-ïðèëîæåíèé
..Ôóíêöèè-ïðîöåäóðû
..Ïîëüçîâàòåëüñêèå ôóíêöèè â Excel
..Îïåðàòîðû âåòâëåíèÿ: ïðîñòîé âûáîð
..Îïåðàòîðû âåòâëåíèÿ: ñëîæíûé âûáîð
..Èñïîëüçîâàíèå MsgBox
..Ïðåðûâàíèå ïðîöåäóð è ôóíêöèé
..Íåîáÿçàòåëüíûå àðãóìåíòû ôóíêöèé
..Öèêëû VBA ÷.1
..Öèêëû ÷.2
..Öèêëû ÷.3
..Ìàññèâû VBA ÷.1
..Ìàññèâû ÷.2
..Ìàññèâû ÷.3
..Óïðàâëåíèå ôàéëàìè ñ ïîìîùüþ VBA
Ñàìîó÷èòåëü vba: Ïðàêòèêà
Èãðà: Öåïíàÿ ðåàêöèÿ
Ïðèëîæåíèÿ
..Ñóììàòîð
..Íàêëåéêè
..Âîñüìåðêà
..Ìåíåäæåð ïî÷òû
Íàäñòðîéêè
..DEF
..SortSheets
..HideSheet

Vr êëóá ñàíêò ïåòåðáóðã àðåíäà êëóáà.  

Òèïû äàííûõ 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

Õðàíåíèå ÷èñåë äëÿ òî÷íûõ âû÷èñëåíèé â äèàïàçîíå
îò -922337203685477,5808 äî 922337203685477,5807

Date

Õðàíåíèå äàòû è âðåìåíè.
Äàòû îò 1.01.100 äî 31.12.9999
Âðåìÿ îò 00:00:00 äî 23:59:59

Double

Õðàíåíèå ÷èñåë äâîéíîé òî÷íîñòè
îò -1,79769313486232*10308 äî -4,94065645841247*10-324
îò 4,94065645841247*10-324 äî 1,79769313486232*10308

Integer

Õðàíåíèå öåëûõ ÷èñåë îò -32768 äî 32767

Long

Õðàíåíèå öåëûõ ÷èñåë îò -2147483648 äî 2147483647

Single

Õðàíåíèå ÷èñåë îäèíàðíîé òî÷íîñòè
îò -3,402823*1038 äî -1,401298*10-45
îò 1,401298*10-45 äî 3,402823*1038

String

Õðàíåíèå òåêñòà äëèíîé äî 2 ìëðä. ñèìâîëîâ

Variant

Õðàíåíèå ëþáîãî òèïà äàííûõ




 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû