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

Ðåéòèíã vps ñåðâåðîâ Âåíãðèè çäåñü  

Àðèôìåòè÷åñêèå îïåðàòîðû VBA


Îïåðàòîð ïðèñâàèâàíèÿ (=)

Îïåðàòîð ïðèñâàèâàíèÿ èñïîëüçóåòñÿ äëÿ ïðèñâàèâàíèÿ ðåçóëüòàòà âûðàæåíèÿ ïåðåìåííîé.

Îïåðàöèÿ ïðèñâàèâàíèÿ èìååò äâå ñèíòàêñè÷åñêèå ôîðìû:

1 Let varname = expression
2 varname = expression


varname - ëþáàÿ ïåðåìåííàÿ VBA

expression - ëþáîå âûðàæåíèå VBA


Ïåðâûé âàðèàíò îïåðàöèè ïðèñâàèâàíèÿ èñïîëüçîâàëñÿ â ðàííèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ Basic. Âòîðîé âàðèàíò èñïîëüçóåòñÿ â ñîâðåìåííîé âåðñèè VBA.


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


X = 5 + 7; Y = X + 5 ; Z = X - Y; A = B; I = I + 1


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

Íàïðèìåð, åñëè â îïåðàòîðå ïðèñâàèâàíèÿ À = À +5, ïåðåìåííàÿ À äî îïåðàöèè ïðèñâàèâàíèÿ ñîäåðæàëà çíà÷åíèå 7, òî ïîñëå îïåðàöèè îíà áóäåò ñîäåðæàòü çíà÷åíèå 12 (7+5).

Ñëåäóåò çàïîìíèòü:

Îïåðàòîð ñëîæåíèÿ (+)

Îïåðàòîð ñëîæåíèÿ âûïîëíÿåò ïðîñòîå ñëîæåíèå. Îáà îïåðàíäà äîëæíû áûòü ÷èñëåííûìè âûðàæåíèÿìè èëè ñòðîêàìè, êîòîðûå VBA ìîæåò ïðåîáðàçîâàòü â ÷èñëî. Îïåðàòîð ñëîæåíèÿ ìîæíî òàêæå èñïîëüçîâàòü äëÿ âûïîëíåíèÿ àðèôìåòè÷åñêèõ îïåðàöèé ñ äàííûìè òèïà Date.


Òèï äàííûõ ðåçóëüòàòà âûðàæåíèÿ ñëîæåíèÿ îáû÷íî òîò æå, ÷òî è íàèáîëåå òî÷íûé òèï â ýòîì âûðàæåíèè. Íî, åñòü èñêëþ÷åíèÿ:

Íàïîìíèì ïîðÿäîê óâåëè÷åíèÿ òî÷íîñòè äëÿ ÷èñëåííûõ òèïîâ äàííûõ: Byte, Integer, Long, Single, Double, Currency.

Ñëåäóåò ñêàçàòü, ÷òî íàäî ÷åòêî ïîíèìàòü êàê VBA ïðåîáðàçóåò òèïû äàííûõ â ðåçóëüòàòå àðèôìåòè÷åñêèõ îïåðàöèé. Ýòî ïîìîæåò â äàëüíåéøåì èçáåæàòü ìíîãèõ "íåíóæíûõ" îøèáîê ïðè íàïèñàíèè êîäà.

Îïåðàòîð âû÷èòàíèÿ (-)

Îïåðàòîð âû÷èòàíèÿ âûïîëíÿåò äâå çàäà÷è: èñïîëüçóåòñÿ äëÿ âû÷èòàíèÿ îäíîãî ÷èñëà èç äðóãîãî; îáîçíà÷àåò óíàðíûé ìèíóñ (ýòî çíàê ìèíóñ, êîòîðûé ïîìåùàåòñÿ ïðåä ÷èñëîì äëÿ óêàçàíèÿ òîãî, ÷òî ýòî îòðèöàòåëüíîå ÷èñëî). Ïîìåñòèòü óíàðíûé ìèíóñ ïåðåä ïåðåìåííîé èëè âûðàæåíèåì îçíà÷àåò òî æå, ÷òî óìíîæèòü ýòî ÷èñëî íà -1.


Îáà îïåðàíäà â âûðàæåíèè âû÷èòàíèÿ äîëæíû áûòü ÷èñëåííûìè ïåðåìåííûìè (âûðàæåíèÿìè) èëè ñòðîêîâûìè âûðàæåíèÿìè, êîòîðîå VBA ìîæåò ïðåîáðàçîâàòü â ÷èñëî. Ìîæíî èñïîëüçîâàòü îïåðàòîð âû÷èòàíèÿ äëÿ ðàáîòû ñ äàòàìè.

VBA èñïîëüçóåò òå æå ïðàâèëà äëÿ îïðåäåëåíèÿ òèïà äàííûõ ðåçóëüòàòà âûðàæåíèÿ âû÷èòàíèÿ, ÷òî è äëÿ âûðàæåíèé, èñïîëüçóþùèõ îïåðàòîð ñëîæåíèÿ. Íî, åñòü äîïîëíåíèå:
Åñëè îáà îïåðàíäà â âûðàæåíèè ÿâëÿþòñÿ òèïîì Date, òî ðåçóëüòàò âûðàæåíèÿ áóäåò èìåòü òèï Double.

Îïåðàòîð óìíîæåíèÿ (*)

Îïåðàòîð óìíîæåíèÿ ïåðåìíîæàåò äâà ÷èñëà - ðåçóëüòàòîì âûðàæåíèÿ óìíîæåíèÿ ÿâëÿåòñÿ ïðîèçâåäåíèå äâóõ îïåðàíäîâ. Îáà îïåðàíäà â âûðàæåíèè óìíîæåíèÿ äîëæíû áûòü ÷èñëåííûìè âûðàæåíèÿìè èëè ñòðîêàìè, êîòîðûå VBA ìîæåò ïðåîáðàçîâàòü â ÷èñëî.

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

Îïåðàòîð äåëåíèÿ (/)

Îïåðàòîð äåëåíèÿ ñ ïëàâàþùåé òî÷êîé âûïîëíÿåò îáû÷íîå àðèôìåòè÷åñêîå äåëåíèå ñâîèõ îïåðàíäîâ.

 âûðàæåíèÿõ äåëåíèÿ ïåðâûé îïåðàíä äåëèòñÿ íà âòîðîé îïåðàíä - ðåçóëüòàòîì äåëåíèÿ ÿâëÿåòñÿ ÷àñòíîå.

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

Åñëè õîòÿ áû îäèí îïåðàíä â âûðàæåíèè äåëåíèÿ èìååò òèï Null, òî ðåçóëüòàò äåëåíèÿ òàêæå áóäåò Null.

Òèïîì äàííûõ îïåðàöèè äåëåíèÿ ñ ïëàâàþùåé òî÷êîé ÿâëÿåòñÿ Double, çà èñêëþ÷åíèåì:

Öåëî÷èñëåííîå äåëåíèå (\)

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

Îáà îïåðàíäà â âûðàæåíèè öåëî÷èñëåííîãî äåëåíèÿ äîëæíû áûòü ÷èñëåííûìè âûðàæåíèÿìè èëè ñòðîêàìè, êîòîðûå VBA ìîæåò ïðåîáðàçîâàòü â ÷èñëî.

Ïåðåä âûïîëíåíèåì îïåðàöèè öåëî÷èñëåííîãî äåëåíèÿ VBA îêðóãëÿåò êàæäûé îïåðàíä äî ÷èñëà òèïà Integer èëè Long (òàêîé æå òèï èìååò è ðåçóëüòàò öåëî÷èñëåííîãî äåëåíèÿ).

VBA îòáðàñûâàåò (íî íå îêðóãëÿåò!) ëþáîé äðîáíûé îñòàòîê ðåçóëüòàòà âûðàæåíèÿ öåëî÷èñëåííîãî äåëåíèÿ. Íàïðèìåð, âûðàæåíèÿ 22\5 è 24\5 áóäóò èìåòü îäèí è òîò æå ðåçóëüòàò = 4.

Åñëè õîòÿ áû îäèí îïåðàíä â âûðàæåíèè öåëî÷èñëåííîãî äåëåíèÿ èìååò òèï Null, òî ðåçóëüòàò äåëåíèÿ òàêæå áóäåò Null.

Äåëåíèå ïî ìîäóëþ (Mod)

Äåëåíèå ïî ìîäóëþ êàê áû äîïîëíÿåò öåëî÷èñëåííîå äåëåíèå.  äåëåíèè ïî ìîäóëþ âûðàæåíèå âîçâðàùàåò òîëüêî îñòàòîê îïåðàöèè äåëåíèÿ êàê öåëîå.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0

Îñòàëüíûå ñâîéñòâà äåëåíèÿ ïî ìîäóëþ èäåíòè÷íû öåëî÷èñëåííîìó äåëåíèþ.

Âîçâåäåíèå â ñòåïåíü (^)

Îïåðàòîð âîçâåäåíèÿ â ñòåïåíü âîçâîäèò ÷èñëî â ñòåïåíü.


5 ^ 3 =125


Îáà îïåðàòîðà â âûðàæåíèè âîçâåäåíèÿ â ñòåïåíü äîëæíû áûòü ÷èñëåííûìè âûðàæåíèÿìè èëè ñòðîêàìè, êîòîðûå VBA ìîæåò ïðåîáðàçîâàòü â ÷èñëà.

Îïåðàíä ñëåâà îò îïåðàòîðà âîçâåäåíèÿ â ñòåïåíü ìîæåò áûòü îòðèöàòåëüíûì ÷èñëîì òîëüêî, åñëè îïåðàíä ñïðàâà ÿâëÿåòñÿ öåëûì.

Ðåçóëüòàò âûðàæåíèÿ èìååò òèï Double.

Åñëè õîòÿ áû îäèí îïåðàíä â âûðàæåíèè èìååò òèï Null, òî ðåçóëüòàò âîçâåäåíèÿ â ñòåïåíü òàêæå áóäåò Null.


Ïîäâåäåì èòîã âûøåèçëîæåííîìó:

Àðèôìåòè÷åñêèå îïåðàòîðû VBA

Îïåðàòîð Ñèíòàêñèñ Îïèñàíèå
+ A + B Ñëîæåíèå: ñêëàäûâàåò À è Â.
- A - B Âû÷èòàíèå: âû÷èòàåò èç À Â.
* A * B Óìíîæåíèå: ïåðåìíîæàåò À íà Â.
/ A / B Äåëåíèå: äåëèò À íà Â.
\ A \ B Öåëî÷èñëåííîå äåëåíèå: äåëèò À íà Â, îòáðàñûâàÿ äðîáíóþ ÷àñòü. Ðåçóëüòàò - öåëîå ÷èñëî.
Mod A Mod B Äåëåíèå ïî ìîäóëþ: äåëèò À íà Â, âîçâðàùàÿ òîëüêî îñòàòîê îïåðàöèè äåëåíèÿ êàê öåëîå ÷èñëî.
^ A ^ B Âîçâåäåíèå â ñòåïåíü: âîçâîäèò À â ñòåïåíü Â.



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



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