Ñòðîêîâûå îïåðàòîðû VBA è îïåðàòîðû ñðàâíåíèÿ
Îïåðàòîðû ñðàâíåíèÿ
Îïåðàòîð | Ñèíòàêñèñ | Îïèñàíèå |
= | A = B | Ðàâåíñòâî: Åñëè À ðàâíî Â, òî - True. Èíà÷å - False |
< | A < B | Ìåíüøå: Åñëè À ìåíüøå Â, òî - True. Èíà÷å - False |
<= | A <= B | Ìåíüøå èëè ðàâíî: Åñëè À ìåíüøå èëè ðàâíî Â, òî - True. Èíà÷å - False |
> | A > B | Áîëüøå: Åñëè À áîëüøå Â, òî - True. Èíà÷å - False |
>= | A >= B | Áîëüøå èëè ðàâíî: Åñëè À áîëüøå èëè ðàâíî Â, òî - True. Èíà÷å - False |
<> | A <> B | Íå ðàâíî: Åñëè À íå ðàâíî Â, òî - True. Èíà÷å - False |
Îáû÷íî îïåðàöèè ñðàâíåíèÿ èñïîëüçóþòñÿ â îïåðàòîðàõ îðãàíèçàöèè öèêëîâ äëÿ ïðèíÿòèÿ êàêîãî-ëèáî ðåøåíèÿ î äàëüíåéøåì õîäå âûïîëíåíèÿ îïåðàöèé.
Ðåçóëüòàòîì ëþáîé îïåðàöèè ñðàâíåíèÿ ÿâëÿåòñÿ çíà÷åíèå òèïà Boolean: True, False.
Åñëè îáà îïåðàíäà â âûðàæåíèè ñðàâíåíèÿ èìåþò îäèí è òîò æå òèï äàííûõ, VBA âûïîëíÿåò ïðîñòîå ñðàâíåíèå äëÿ ýòîãî òèïà.
Åñëè îáà îïåðàíäà â âûðàæåíèè ñðàâíåíèÿ èìåþò îïðåäåëåííûå òèïû è ýòè òèïû íå ÿâëÿþòñÿ ñîâìåñòèìûìè, VBA âûäàåò ñîîáùåíèå îá îøèáêå íåñîâïàäåíèÿ òèïîâ.
Åñëè îäèí èëè îáà îïåðàíäà â âûðàæåíèè ñðàâíåíèÿ ÿâëÿþòñÿ ïåðåìåííûìè òèïà Variant, VBA ïûòàåòñÿ ïðåîáðàçîâàòü òèï Variant â êàêîé-ëèáî ñîâìåñòèìûé òèï.
Ñðàâíåíèå ñòðîê
Ïðè ñðàâíåíèè ñòðîê îïåðàòîðàìè îòíîøåíèÿ, VBA ñðàâíèâàåò êàæäóþ ñòðîêó ñëåâà íàïðàâî ïîñèìâîëüíî.
 VBA îäíà ñòðîêà ðàâíà äðóãîé òîëüêî, êîãäà îáå ñòðîêè ñîäåðæàò òî÷íî òàêèå æå ñèìâîëû â òî÷íî òàêîì æå ïîðÿäêå è îáå ñòðîêè èìåþò îäíó è òó æå äëèíó. Íàïðèìåð, ñòðîêè "àáâãä" "àáâãä " " àáâãä" íå ðàâíû ìåæäó ñîáîé, ò.ê. VBA íå èãíîðèðóåò íà÷àëüíûå èëè êîíå÷íûå ñèìâîëû ïðîáåëà ïðè ñðàâíåíèè ñòðîê.
Ñëåäóåò áûòü âíèìàòåëüíûì ïðè ñðàâíåíèè ñòðîê ïåðåìåííîé äëèíû.
Äâîè÷íîå è òåêñòîâîå ñðàâíåíèå ñòðîê
Äëÿ ñîõðàíåíèÿ òåêñòà êîìïüþòåð èñïîëüçóåò ñõåìó, â êîòîðîé êàæäûé îòîáðàæàåìûé ñèìâîë èìååò óíèêàëüíûé íîìåð. Âñå áóêâû àëôàâèòà èìåþò ñâîè óíèêàëüíûå íîìåðà. Îáû÷íî áóêâû âåðõíåãî ðåãèñòðà èìåþò ìåíüøèå íîìåðà, ÷åì áóêâû íèæíåãî ðåãèñòðà. ×èñëî, ñîîòâåòñòâóþùåå îïðåäåëåííîé áóêâå èëè ñèìâîëó, íàçûâàåòñÿ êîäîì ñèìâîëà.
Ïðè âûïîëíåíèè äâîè÷íîãî ñðàâíåíèÿ ñòðîêîâîé èíôîðìàöèè VBA èñïîëüçóåò áèíàðíûé ýêâèâàëåíò ÷èñëà äëÿ êàæäîãî ñèìâîëà. Òàêîé ìåòîä ñðàâíåíèÿ íàçûâàåòñÿ äâîè÷íûì èëè áèíàðíûì è ÿâëÿåòñÿ ìåòîäîì ñðàâíåíèÿ ïî óìîë÷àíèþ.
Ò.ê. áóêâû âåðõíåãî ðåãèñòðà èìåþò ìåíüøèå äâîè÷íûå íîìåðà, áóêâû âåðõíåãî ðåãèñòðà ðàñïîëàãàþòñÿ â àëôàâèòíîì ïîðÿäêå ïåðåä áóêâàìè íèæíåãî ðåãèñòðà. Ïîýòîìó ïðè äâîè÷íîì ñðàâíåíèè ñòðîê, ñòðîêà "ÀÁÂ" áóäåì ìåíüøå ñòðîêè "àáâ".
Ïðè òåêñòîâîì ñðàâíåíèè ñòðîê VBA íå èñïîëüçóåò äâîè÷íûé ýêâèâàëåíò ñèìâîëîâ, è íå "ðàçëè÷àåò" âåðõíåãî è íèæíåãî ðåãèñòðà.  òåêñòîâîì ñðàâíåíèè ñòðîêà "àáâ" ðàâíà ñòðîêå "ÀÁÂ".
Äëÿ âûáîðà ìåòîäà ñðàâíåíèÿ ñòðîê èñïîëüçóåòñÿ äèðåêòèâà Option Compare
Option Compare [Text | Binary]
Äàííàÿ äèðåêòèâà äîëæíà íàõîäèòüñÿ â îáëàñòè îáúÿâëåíèÿ ìîäóëÿ.
Êîíêàòåíàöèÿ ñòðîê
Ïðèñîåäèíåíèå îäíîé ñòðîêè ê äðóãîé íàçûâàåòñÿ êîíêàòåíàöèåé ñòðîê.
Êîíêàòåíàöèþ ñòðîê îáû÷íî èñïîëüçóþò äëÿ ôîðìèðîâàíèÿ ñòðîê èç ðàçëè÷íûõ èñòî÷íèêîâ â ïðîöåäóðå, ÷òîáû ñîçäàâàòü ñîîáùåíèå äëÿ âûâîäà íà ýêðàí.  VBA èìååòñÿ äâà îïåðàòîðà äëÿ êîíêàòåíàöèè ñòðîê.
Îïåðàòîð êîíêàòåíàöèè (&)
Îïåðàòîð (&)â VBA èñïîëüçóåòñÿ òîëüêî äëÿ êîíêàòåíàöèè ñòðîê.
Ñèíòàêñèñ
Îïåðàíä_1 & Îïåðàíä_2 [& Îïåðàíä_3..]
Îïåðàíä_N - ëþáîå äîïóñòèìîå ñòðîêîâîå èëè ÷èñëåííîå âûðàæåíèå (êîòîðîå ïðåîáðàçóåòñÿ â ñòðîêîâîå).
Òèï äàííûõ ðåçóëüòàòà êîíêàòåíàöèè ñòðîê - String.
Åñëè îïåðàíä â âûðàæåíèè êîíêàòåíàöèè ñòðîê èìååò çíà÷åíèå Empty èëè Null, VBA èíòåðïðåòèðóåò ýòîò îïåðàíä êàê ñòðîêó íóëåâîé äëèíû (ñòðîêà íå ñîäåðæàùàÿ ñèìâîëîâ).
Îáðàòèòå âíèìàíèå! Ñèìâîë (&) îïåðàöèè êîíêàòåíàöèè îáÿçàòåëüíî íåîáõîäèìî îòäåëÿòü ïðîáåëîì îò èìåíè ïåðåìåííîé, ò.ê. â ïðîòèâíîì ñëó÷àå VBA ìîæåò èíòåðïðåòèðîâàòü ýòîò ñèìâîë êàê ñèìâîë îïðåäåëåíèÿ òèïà Long.
Îïåðàòîð ñëîæåíèÿ â êîíêàòåíàöèè ñòðîê
Äëÿ êîíêàòåíàöèè ñòðîê ìîæíî òàêæå èñïîëüçîâàòü îïåðàòîð (+).
Ýòîò îïåðàòîð èìååò òàêîé æå ñèíòàêñèñ è òðåáîâàíèÿ, êàê è îïåðàòîð (&). Îäíàêî ñëåäóåò ïîíèìàòü, ÷òî â VBA îñíîâíîå ïðåäíàçíà÷åíèå îïåðàòîðà (+) - ýòî àðèôìåòè÷åñêîå ñëîæåíèå. Ïîýòîìó, ÷òîáû èçáåæàòü äâóñìûñëåííîñòè ÷òåíèÿ ïðîãðàììíîãî êîäà, äëÿ êîíêàòåíàöèè ñòðîê íàñòîÿòåëüíî ðåêîìåíäóåòñÿ èñïîëüçîâàòü èìåííî îïåðàòîð (&).
Ïðèîðèòåòû âûïîëíåíèÿ îïåðàöèé
Ìíîãèå èç âûðàæåíèé â ïðîãðàììíîé êîäå ÿâëÿþòñÿ ñëîæíûìè (ñîñòàâíûìè), ò.å. ñîñòîÿò èç äâóõ èëè áîëåå âûðàæåíèé.
Ïðè âû÷èñëåíèè ñëîæíûõ âûðàæåíèé VBA ñëåäóåò ñëåäóþùèì ïðàâèëàì:
- ×àñòè âûðàæåíèÿ, çàêëþ÷åííûå â êðóãëûå ñêîáêè, âñåãäà âû÷èñëÿþòñÿ â ïåðâóþ î÷åðåäü;
- Êîíêðåòíûå îïåðàöèè âûïîëíÿþòñÿ â çàâèñèìîñòè îò èåðàðõèè îïåðàòîðîâ (òàáëèöà íèæå);
- Ïðè ðàâåíñòâå èåðàðõèè îïåðàòîðîâ, îíè âû÷èñëÿþòñÿ ñëåâà íàïðàâî.
Îïåðàòîð | Êîììåíòàðèè |
^ | Âîçâåäåíèå â ñòåïåíü, âûñøèé ïðèîðèòåò |
- | Óíàðíûé ìèíóñ |
* / | Óìíîæåíèå è äåëåíèå èìåþò ðàâíûå ïðèîðèòåòû |
\ | |
MOD | |
+ - | Ñëîæåíèå è âû÷èòàíèå èìåþò ðàâíûå ïðèîðèòåòû |
& | Êîíêàòåíàöèÿ ñòðîê âûïîëíÿåòñÿ ïîñëå àðèôìåòè÷åñêèõ îïåðàöèé ïåðåä îïåðàöèÿìè ñðàâíåíèÿ è ëîãè÷åñêèìè îïåðàöèÿìè |
< <= = >= > <> | Âñå îïåðàöèè ñðàâíåíèÿ èìåþò ðàâíûå ïðèîðèòåòû è âûïîëíÿþòñÿ ñëåâà íàïðàâî. Äëÿ ãðóïïèðîâàíèÿ îïåðàöèé íàäî ïîëüçîâàòüñÿ êðóãëûìè ñêîáêàìè |
NOT | |
AND | |
OR | |
XOR | |
EQV | |
IMP |