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

 

Ñîâìåñòèìîñòü òèïîâ äàííûõ VBA


Îïåðàòîðû è âûðàæåíèÿ

Âûðàæåíèå - ýòî çíà÷åíèå èëè ãðóïïà çíà÷åíèé, âûðàæàþùàÿ îòäåëüíîå çíà÷åíèå. Êàæäîå âûðàæåíèå âû÷èñëÿåòñÿ äî îòäåëüíîãî çíà÷åíèÿ. Íàïðèìåð, âûðàæåíèå 10+20 èìååò ðåçóëüòàò 30.

Âûðàæåíèÿ ñîñòîÿò èç îäíîé èëè áîëåå ÷àñòåé:

Âñå âûðàæåíèÿ èìåþò ðåçóëüòàòîì îäíî çíà÷åíèå, èìåþùåå îäèí èç òèïîâ äàííûõ, î êîòîðûõ ãîâîðèëîñü íà ïðåäûäóùèõ óðîêàõ.

Âûðàæåíèÿ ìîãóò òàêæå èìåòü ðåçóëüòàòîì îäíî èç ñïåöèàëüíûõ çíà÷åíèé Empty èëè Null.

Çíà÷åíèå Empty ïðåäñòàâëÿåò íåèíèöèàëèçèðîâàííóþ ïåðåìåííóþ òèïà Variant (èëè ðåçóëüòàò âûðàæåíèÿ, ñîäåðæàùèé íåèíèöèàëèçèðîâàííóþ ïåðåìåííóþ òèïà Variant).

Çíà÷åíèå Null ïðåäñòàâëÿåò âûðàæåíèå, ñîäåðæàùåå íåâåðíûå äàííûå.

Îïåðàòîðû èñïîëüçóþòñÿ äëÿ îáúåäèíåíèÿ, ñðàâíåíèÿ èëè äðóãèõ äåéñòâèé íàä îïðåäåëåííûìè çíà÷åíèÿìè â âûðàæåíèè. Îïåðàòîðàì ïðèñâîåíû èìåíà, ïîñêîëüêó îíè ÿâëÿþòñÿ ñèìâîëàìè, îáîçíà÷àþùèìè òî, ÷òî ñ ðàçëè÷íûìè çíà÷åíèÿìè â âûðàæåíèè äîëæíû áûòü âûïîëíåíû îïðåäåëåííûå ìàòåìàòè÷åñêèå è äðóãèå îïåðàöèè.

Ýëåìåíòû äàííûõ, íàä êîòîðûìè îïåðàòîð âûïîëíÿåò äåéñòâèå, íàçûâàþòñÿ îïåðàíäàìè. Íàïðèìåð, â âûðàæåíèè 10+20 ÷èñëà 10 è 20 ÿâëÿþòñÿ îïåðàíäàìè îïåðàòîðà ñëîæåíèÿ. Âûðàæåíèå ìîæåò ñîäåðæàòü îäèí, íåñêîëüêî îïåðàòîðîâ èëè íè îäíîãî.


Íå âñå òèïû äàííûõ ñîâìåñòèìû äðóã ñ äðóãîì, è íåëüçÿ èñïîëüçîâàòü íåñîâìåñòèìûå òèïû äàííûõ â îäíîì è òîì æå âûðàæåíèè. Íàïðèìåð, íåëüçÿ ïðîèçâåñòè àðèôìåòè÷åñêîå ñëîæåíèå íàä ÷èñëîì è ñòðîêîé. Ïðè îáðàáîòêå âûðàæåíèÿ, ñîäåðæàùåãî ðàçëè÷íûå òèïû äàííûõ, VBA ñíà÷àëà ïûòàåòñÿ óñòðàíèòü ëþáîå ðàçëè÷èå òèïîâ, ïðåîáðàçóÿ çíà÷åíèÿ â âûðàæåíèè â ñîâìåñòèìûå òèïû äàííûõ. Åñëè óñòðàíèòü êàêèå-ëèáî ðàçëè÷èÿ ïðåîáðàçîâàíèåì òèïîâ íå óäàåòñÿ, îòîáðàæàåòñÿ îøèáêà âðåìåíè èñïîëíåíèÿ è ïðîöåäóðà ïðåêðàùàåò âûïîëíÿòüñÿ.

VBA ïðåäîñòàâëÿåò ðàçëè÷íûå ôóíêöèè äëÿ ïðåîáðàçîâàíèÿ îäíîãî òèïà äàííûõ â äðóãîé (î íèõ áóäåò ðàññêàçàíî ïîçæå).

VBA èñïîëüçóåò ðàçëè÷íûå ïðàâèëà äëÿ àâòîìàòè÷åñêîãî ïðåîáðàçîâàíèÿ äàííûõ â ñîâìåñòèìûå òèïû. Êàê ïðàâèëî, áîëüøèíñòâî âûðàæåíèé, èñïîëüçóþùèõ ðàçíûå òèïû äàííûõ, âûçûâàþò îøèáêó íåñîâïàäåíèÿ òèïîâ òîëüêî òîãäà, êîãäà îáà îïåðàíäà â âûðàæåíèè èìåþò îïðåäåëåííûå è ðàçíûå òèïû. Âûðàæåíèÿ íå âûçûâàþò îøèáêó íåñîâïàäåíèÿ òèïîâ, êîãäà îäèí èç îïåðàíäîâ ÿâëÿåòñÿ ïåðåìåííîé òèïà Variant. VBA ëåã÷å âûïîëíÿåò àâòîìàòè÷åñêèå ïðåîáðàçîâàíèÿ òèïîâ ñ äàííûìè òèïà Variant.

Ïðåîáðàçîâàíèÿ ÷èñëåííûõ òèïîâ

VBA ïðåîáðàçóåò ÷èñëåííûå òèïû äàííûõ â âûðàæåíèè â òèï íàèáîëüøåé òî÷íîñòè, êîòîðûé çàòåì äàåò ðåçóëüòàòó âûðàæåíèÿ. Íàïðèìåð, îïåðàíäàìè âûðàæåíèÿ ÿâëÿþòñÿ ÷èñëà 10(Integer) è 20.89 (Single) - ðåçóëüòàò âûðàæåíèÿ áóäåò èìåòü òèï Single.

Íî, åñëè ïåðåìåííîé òèïà Integer ïîïûòàòüñÿ ïðèñâîèòü ÷èñëåííîå âûðàæåíèå òèïà Single, òî VBA ïðîèçâåäåò îêðóãëåíèå äî íåîáõîäèìîé òî÷íîñòè.

Ïðåîáðàçîâàíèå ñòðîê è ÷èñåë

Ïðè ïðåîáðàçîâàíèè ÷èñëà â ñòðîêó VBA ñîçäàåò ñòðîêó, ñîäåðæàùóþ âñå öèôðû ýòîãî ÷èñëà è äåñÿòè÷íûé çíàê (åñëè òàêîâîé èìååòñÿ). Íàïðèìåð, ÷èñëî 123.849 áóäåò ïðåîáðàçîâàíî â ñòðîêó "123.849".

Åñëè ÷èñëî î÷åíü áîëüøîå èëè î÷åíü ìàëåíüêîå - VBA ñîçäàñò ñòðîêó â ýêñïîíåíöèàëüíîì âèäå. Íàïðèìåð: 123000000 ïðåîáðàçóåòñÿ â "123Å6".

Îáðàòíîå ïðåîáðàçîâàíèå âîçìîæíî, åñëè òîëüêî ñòðîêà ñîäåðæèò ñèìâîëüíîå ïðåäñòàâëåíèå ÷èñëà â äåñÿòè÷íîì ôîðìàòå èëè ýêñïîíåíöèàëüíîì, ïðè ýòîì â êà÷åñòâå ðàçäåëèòåëÿ äðîáíîé ÷àñòè èñïîëüçóåòñÿ òî÷êà (íî íå çàïÿòàÿ).

Ïðåîáðàçîâàíèÿ Boolean

Êîãäà VBA ïðåîáðàçóåò çíà÷åíèÿ òèïà Boolean â ÷èñëà, çíà÷åíèå True ïðåîáðàçóåòñÿ â 1, à False - â 0.

Êîãäà ïðîèñõîäèò îáðàòíîå ïðåîáðàçîâàíèå, òî VBA ïðåîáðàçóåò 0 â False, à ëþáîå äðóãîå ÷èñëî - â True.

Åñëè ïðîèñõîäèò ïðåîáðàçîâàíèå òèïà Boolean â ñòðîêè, òî VBA èñïîëüçóåò ñòðîêó "True" äëÿ ëîãè÷åñêîãî çíà÷åíèÿ True è ñòðîêó "False" - äëÿ False. Îáðàòíîãî ïðåîáðàçîâàíèÿ ñòðîêè â òèï Boolean íå ïðåäóñìîòðåíî.

Ïðåîáðàçîâàíèå Date

Êîãäà VBA ïðåîáðàçóåò òèï äàííûõ Date â ÷èñëî, ðåçóëüòàòîì ÿâëÿåòñÿ ÷èñëåííîå çíà÷åíèå - ÷èñëî òèïà Double, êîòîðîå ñîäåðæèò êîëè÷åñòâî äíåé îò 30 äåêàáðÿ 1899 (îòðèöàòåëüíîå ÷èñëî ïðåäñòàâëÿåò äàòó, áîëåå ðàííþþ ÷åì 30 äåêàáðÿ 1899). Äåñÿòè÷íàÿ ÷àñòü ÷èñëà âûðàæàåò âðåìÿ äíÿ êàê ÷àñòü äíÿ; 0 - ýòî ïîëíî÷ü, 0.5 - ýòî ïîëäåíü.

Ïðåîáðàçîâàíèå ÷èñëåííûõ òèïîâ äàííûõ â òèïû Date ÿâëÿåòñÿ ïðîñòî îáðàòíûì ïðåîáðàçîâàíèþ òèïà Date â ÷èñëî.




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



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