Internet Windows Android
Kengaytirish

VBA excel operatorlari. VBA mantiqiy operatorlari

VBA tili juda oson va tez o'rganish va keyin kundalik foydalanish uchun mo'ljallangan. VBA tili professional dasturchilar uchun ham, oddiy foydalanuvchilar uchun ham kundalik ishlarni avtomatlashtirish uchun foydalidir. Maqsadingiz nima bo'lishidan qat'iy nazar: kundalik ishingizni soddalashtirish yoki mahsuldorligingizni oshirish, VBA, albatta, bu maqsadlar uchun eng yaxshi tildir, chunki u Microsoft Office ilovalari bilan ishlash uchun maxsus ishlab chiqilgan.

Operatorlarni bilish VBA-da har qanday mavzuni o'rganish uchun zaruriy asosdir, ya'ni. Til o'rganishni boshlashdan oldin operatorlar va funktsiyalarga etarli vaqt sarflashingiz kerak.

VBA operatorlari

  • Sarlavhani faollashtiring, kuting- Sarlavha argumenti bilan belgilangan sarlavha yoki vazifa identifikatori bo'yicha ochiq ilovani faollashtiradi
  • Ovozli signal- ovozli signal
  • Ismni chaqiring, argumentist- Name deb nomlangan protsedurani chaqirish. (Chunki Call kalit so'zi ixtiyoriy va siz protsedurani faqat uning nomidan foydalanib chaqirishingiz mumkin, bu bayonot VBA dasturlashda kamdan-kam qo'llaniladi)
  • ChDir yo'li- Joriy jildni yo'l argumenti bilan belgilangan papka bilan almashtiradi
  • Fayllar roʻyxatini yoping- Joriy drayverni haydovchi argumenti bilan belgilangan drayverga o'zgartiradi
  • CONSTNAME- CONSTNAME nomli doimiy o'zgaruvchini e'lon qiladi
  • Sana = sana- Tizim sanasini sana argumenti bilan belgilangan sanaga o'zgartiradi
  • Ismni e'lon qilish- Dinamik havolalar kutubxonasidan (DLL) protsedurani e'lon qiladi
  • DefBool harf diapazoni- Harf diapazoni argumentida ko'rsatilgan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun mantiqiy ma'lumotlar turi sifatida mantiqiy ma'lumotni o'rnatadigan modul darajasidagi operator (masalan, DefBool A-F)
  • DefByte harf diapazoni- Baytni harf oralig'i argumenti bilan belgilangan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun standart ma'lumotlar turi sifatida o'rnatadi.
  • DefCur harf diapazoni- Harf diapazonida ko'rsatilgan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun valyutani standart ma'lumotlar turi sifatida o'rnatadi
  • DefDate harf diapazoni- Harf oralig'i bilan belgilangan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun Sana standart ma'lumotlar turi sifatida o'rnatiladi
  • DefDbl harf diapazoni- Double-ni harf oralig'i argumenti bilan belgilangan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun standart ma'lumotlar turi sifatida o'rnatadi.
  • DefInt harf diapazoni- Integer ni harf oralig'i argumentida ko'rsatilgan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun standart ma'lumotlar turi sifatida o'rnatadi
  • DefLng harf diapazoni- Harf oralig'i argumenti bilan belgilangan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun Long ni standart ma'lumotlar turi sifatida o'rnatadi
  • DefObj harf diapazoni- Ob'ektni harf oralig'i argumenti bilan belgilangan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun standart ma'lumotlar turi sifatida o'rnatadi
  • DefSng harf diapazoni- Harf diapazoni argumenti bilan ko'rsatilgan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun Single ni standart ma'lumotlar turi sifatida o'rnatadi
  • DefStr harf diapazoni- Stringni harf oralig'i argumenti bilan belgilangan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun standart ma'lumotlar turi sifatida o'rnatadi
  • DefVar harf diapazoni- Variant turini harf oralig'i argumenti bilan belgilangan harflar bilan boshlanadigan barcha o'zgaruvchilar uchun standart ma'lumotlar turi sifatida o'rnatadi.
  • DeleteStting ilova nomi, bo'lim, kalit- Windows registridan bo'lim yoki kalitni olib tashlaydi
  • Dim varname- varname nomli o'zgaruvchini e'lon qilish
  • Do: Loop- Mantiqiy shart rost bo'lgunga qadar bir nechta bayonotlar bo'ylab aylanish
  • Kalit so'zni tugatish- Jarayon, funksiya yoki boshqaruv tuzilmasini tugatadi
  • Enum nomi- sanab o'tilgan turdagi o'zgaruvchini e'lon qiluvchi modul darajasidagi operator
  • Massiv ro'yxatini o'chirish- Dinamik ravishda ajratilgan massivdan xotirani tozalaydi yoki qat'iy o'lchamli massivni qayta ishga tushiradi
  • Xato xato raqami- Err ob'ektini xato raqamiga o'rnatish orqali xatoni simulyatsiya qiladi
  • Hodisa protsedurasi nomi (arglist)- Operator faqat sinf modulida bo'lishi mumkin. U foydalanuvchi tomonidan belgilangan hodisani e'lon qiladi
  • Kalit so'zdan chiqish- protsedura, funksiya yoki boshqaruv tuzilmasidan chiqish
  • FileCopy manbasi, maqsad- Manba faylni maqsadli papkaga ko'chiradi (siz manba fayl nomini o'zgartirishingiz mumkin)
  • Har biri uchun: Keyingi- To'plamning har bir a'zosini aylanib o'ting
  • Uchun: Keyingi- sikl hisoblagichi belgilangan qiymatga etgunga qadar bir nechta bayonotlar bo'ylab aylanish
  • Funktsiya- Maxsus funktsiya protsedurasini e'lon qiladi
  • #fayl raqamini oling, varname- Open operatori bilan ochilgan kiritish-chiqarish faylidan o'zgaruvchini o'qiydi
  • GoSub: Qaytish- Protsedurada tasvirlangan kichik dasturga kiradi va undan chiqadi. (Ushbu bayonotdan foydalanish tavsiya etilmaydi, chunki alohida protsedura yaratish kodni tushunishni osonlashtiradi)
  • GoTo liniyasi- Boshqaruvni chiziq yorlig'i bilan ko'rsatilgan kod qatoriga o'tkazadi
  • Agar: Keyin: Boshqa- Mantiqiy test natijasiga ko'ra ikkita kod qismidan birini bajaradi
  • InterfaceName, Classni o'rnatadi- Sinf modulida amalga oshiriladigan interfeys yoki sinf nomini belgilaydi
  • #fayl raqamini, varlistlarni kiriting- I/U faylidan o'zgaruvchilarni o'qiydi
  • Yo'l nomini o'ldiring- Diskdan fayl yo'li nomini olib tashlaydi
  • Varname = ifoda bo'lsin- Varname o'zgaruvchisini ifodaga o'rnatadi. Let kalit so'zi ixtiyoriy va deyarli ishlatilmaydi
  • Chiziq kiritish #fayl raqami, var- Kiritish-chiqarish faylidan bitta satrni o'qiydi va uni satr o'zgaruvchisida saqlaydi
  • Yuklash- Shaklni xotiraga yuklaydi, lekin uni ekranda aks ettirmaydi
  • #fayl raqamini, yozib olish diapazonini qulflang- Faylga kirish/chiqarish ruxsatini boshqaradi
  • Lset stringvar = string- eng chap belgidan boshlab satrni String tipidagi o'zgaruvchiga joylashtiradi. Bunday holda, o'zgaruvchining o'lchami o'zgarmaydi
  • LSet var1 = var2- Foydalanuvchi tomonidan belgilangan bir turdagi o‘zgaruvchini boshqa, lekin mos keladigan, foydalanuvchi tomonidan belgilangan turdagi o‘zgaruvchiga nusxa ko‘chiradi
  • O'rta- satr o‘zgaruvchisidagi belgilangan sonli belgilarni boshqa qatordagi belgilar bilan almashtiradi
  • O'rta B- bayt-bayt satr o‘zgaruvchisidagi belgilarni boshqa qatordagi belgilar bilan almashtiradi
  • MkDir yo'li- yo'l nomli papka yaratadi
  • Oldpath nomini yangi yo'l nomi sifatida nomlang- Fayl yoki jild nomini o'zgartiradi
  • Xato haqida- Xatolar qanday hal qilinishini belgilaydi
  • Yoqilgan:GoSub, Yoqilgan:GoTo- Boshqaruvni ifoda natijasi asosida berilgan satrga o‘tkazadi
  • Yo'l nomini oching,:- I/U uchun faylni ochadi
  • Variant bazasi 0|1- (modul darajasida) massivlar uchun standart pastki chegarani o'rnatadi (birinchi elementning soni)
  • Variantni solishtirish Matn|Ikkilik- Standart satrlarni taqqoslash rejimini belgilaydi (modul darajasida).
  • Variant aniq- dasturchini o'zgaruvchilarni aniq e'lon qilishga majbur qiladi. Ushbu bayonotni modul darajasida kiriting
  • Xususiy variant- modul yopiqligini va boshqa modullarda joylashgan protseduralardan kirish mumkin emasligini bildiradi. Modul darajasidagi operatorni kiriting
  • #fayl raqamini chop eting- I/U fayliga yozadi
  • Shaxsiy varname- varname o'zgaruvchisi shaxsiy bo'lishini va faqat u e'lon qilingan modulda foydalanish mumkinligini e'lon qiladi. Modul darajasidagi operatorni kiriting
  • Mulkni olish- Ushbu mulkning qiymatlarini qabul qiladigan mulk tartibini e'lon qiladi
  • Mulk ruxsati- Xususiyatlar protsedurasida xususiyatga qiymat beradi
  • Mulk to'plami- Xususiyatlar protsedurasida ob'ektga havolani o'rnatadi
  • Umumiy nom- Moduldagi barcha protseduralar uchun varname o'zgaruvchisiga kirish huquqini beradi
  • #fayl raqami, varname qo'ying- Varname o'zgaruvchisidan I/U fayliga ma'lumotlarni yozadi
  • RaiseEvent voqea nomi, argumentlar- Eventname nomli hodisani ko'taradi
  • Raqamni tasodifiy qilish- Tasodifiy sonlar generatorini ishga tushiradi. Har safar boshqa urug' bilan ishga tushirish uchun raqam argumentini o'tkazib yuboring
  • ReDim varianti- Dinamik massiv uchun xotirani qayta taqsimlaydi
  • Rem sharh- VBAga bayonotdan keyingi matn sharh ekanligini aytadi. Ko'pincha bu operator o'rniga apostrof belgisi qo'llaniladi
  • Qayta o'rnatish- Oldin Open operatori tomonidan ochilgan barcha kiritish-chiqarish fayllarini yopadi
  • Rezyume; qayta boshlash- Xato sodir bo'lgandan so'ng, dasturning bajarilishini xato sodir bo'lgan qatordan davom ettiradi
  • RmDir yo'li- Jildni o'chiradi
  • Rset stringvar = string- Belgilarni o‘ngga tekislab, satr o‘zgaruvchisiga satr yozadi
  • SaveSetting ilova nomi, :- Windows reestrida sozlamalarni yaratadi yoki saqlaydi
  • #fayl raqamini, pozitsiyasini qidiring- I/U faylidagi joriy pozitsiyani o'rnatadi
  • Case-ni tanlang- Ifodaning qiymatiga qarab gaplar guruhini bajaradi
  • SendKeys qatori, kuting- Satr bilan belgilangan klavish bosishlarini xuddi klaviaturadan kiritilgandek faol dasturga uzatadi
  • Ob'ektvar = ob'ektni o'rnating- Ob'ekt ob'ektini objectvar nomli ob'ekt o'zgaruvchisiga belgilaydi
  • SetAttr yo'l nomi, attr- yo'l nomi argumenti bilan ko'rsatilgan fayl uchun attr argumenti (masalan, vbReadOnly) tomonidan belgilangan kirish atributlarini o'rnatadi.
  • Statik nom- modul kodi bajarilgunga qadar varname o'zgaruvchisi o'z qiymatini saqlab qolishini (modul darajasida) e'lon qiladi.
  • STOP- VBA-ni pauza rejimiga o'tkazadi
  • Sub- protsedurani e'lon qiladi
  • Vaqt = vaqt- Tizim vaqtini vaqt argumentiga o'rnatadi
  • Varname kiriting- Maxsus ma'lumotlar turini e'lon qiladi. (Faqat modul darajasida foydalaniladi)
  • Yukni tushirish- Shaklni xotiradan olib tashlaydi
  • #fayl raqami, yozib olish diapazoni qulfini oching- Kirish/chiqarish fayli uchun kirish atributlarini olib tashlaydi
  • Vaholanki: Vend- mantiqiy shart rost bo'lgunga qadar gaplar guruhini aylanib o'tadi
  • Kenglik #fayl raqami, kenglik- I/U fayli uchun chiziq kengligini o'rnatadi
  • Bilan: bilan tugaydi- Berilgan obyekt uchun operatorlar guruhini bajaradi
  • #fayl raqamini yozing- I/U fayliga ma'lumotlarni yozadi
belgisiIsmTavsif
= TengChap va o'ng operandlar teng bo'lsa, True qiymatini qaytaradi. E'tibor bering, bu tayinlash operatorining ortiqcha yuki.
<> Teng emasChap va o'ng operandlar teng bo'lmasa, True qiymatini qaytaradi.
> Ko'ra yaxshiroqChap operand o'ng operanddan katta bo'lsa, True qiymatini qaytaradi.
< Dan kichik; .. dan kamroqChap operand o'ng operanddan kichik bo'lsa, True qiymatini qaytaradi.
>= Ko'proq yoki tengChap operand o'ng operanddan katta yoki teng bo'lsa, True qiymatini qaytaradi.
<= Kamroq yoki tengChap operand o'ng operanddan kichik yoki teng bo'lsa, True qiymatini qaytaradi.
Bu Malumot kapitaliChap ob'ekt havolasi o'ng ob'ekt havolasi bilan bir xil bo'lsa, True qiymatini qaytaradi. U har ikki tomonda Nothing (null ob'ekt havolasi) bilan ham ishlatilishi mumkin. Eslatma. Is operatori taqqoslashni amalga oshirishdan oldin ikkala operandni Ob'ektga majburlashga harakat qiladi. Ikkala tomon ham ibtidoiy tur bo'lsa yoki Ob'ektni (ob'ekt bo'lmagan pastki turi yoki vtEmpty) o'z ichiga olmagan Variant 424 ish vaqti xatosiga olib keladi - "Ob'ekt kerak". Agar biron bir operand boshqasiga tegishli bo'lsa interfeys Xuddi shu ob'ekt, taqqoslash True ni qaytaradi. Agar ikkala misolning adolatliligini tekshirish kerak bo'lsa, unda Va interfeysi, ObjPtr (chapda) = ObjPtr (o'ngda) ObjPtr (chapda) = ObjPtr (o'ngda) dan foydalaning.

Eslatmalar

VBA sintaksisi taqqoslash operatorlarini "zanjirlash" imkonini beradi, lekin umuman olganda, bunday tuzilmalardan qochish kerak. Taqqoslash har doim chapdan o'ngga bir vaqtning o'zida faqat 2 ta operandda amalga oshiriladi va har bir taqqoslash mantiqiy natijaga olib keladi. Masalan, ifoda ...

A = 2: b = 1: c = 0 expr = a > b > c

Ba'zi kontekstlarda b ning a va c oralig'ida ekanligini tekshirish sifatida o'qilishi mumkin. VBA da bu quyidagicha baholanadi:

A = 2: b = 1: c = 0 ifoda = a > b > c ifoda = (2 > 1) > 0 ifoda = Rost > 0 ifoda = -1 > 0 "CInt(True) = -1 ifoda = Noto'g'ri

Operand sifatida Ob'ekt bilan ishlatiladigan Is dan boshqa har qanday taqqoslash operatori Ob'ektning standart a'zosining qaytish qiymati bo'yicha ishlaydi. Agar ob'ektda standart a'zo bo'lmasa, taqqoslash 438 ish vaqti xatosiga olib keladi - "Ob'ekt o'z xususiyatini yoki usulini qo'llab-quvvatlamaydi."

Agar Ob'ekt ishga tushirilmagan bo'lsa, taqqoslash ish vaqti xatosiga olib keladi 91 - "Ob'ekt o'zgaruvchisi yoki Blok o'zgaruvchisi qulflangan".

Agar Nothing literal Is dan boshqa har qanday taqqoslash operatori bilan ishlatilsa, bu kompilyatsiya xatosiga olib keladi - "Obyektdan noqonuniy foydalanish".

Ob'ektning standart Ob'ekti bo'lsa boshqa Ob'ekt, VBA ibtidoiy tur qaytarilmaguncha yoki xatolik yuzaga kelguncha har bir keyingi qaytarish qiymatining standart elementini doimiy ravishda chaqiradi. Misol uchun, SomeClass-da birlamchi a'zo Value bor deylik, bu ChildValue a'zosi ChildValue bilan ChildClass misoli. Taqqoslash...

X = Yangi SomeClass Debug.Print x > 42 ni o'rnating

Quyidagilar baholanadi:

Sozlang x = Yangi SomeClass Debug.Print x.Value.ChildValue > 42

Operandlardan biri raqamli bo'lsa va boshqa operand String yoki String pastki turining varianti bo'lsa, raqamli taqqoslash amalga oshiriladi. Bunday holda, agar Stringni raqam bilan taqqoslab bo'lmasa, taqqoslash natijasi ish vaqti xatosi 13 bo'ladi - "Tip nomuvofiqligi".

Agar ikkalasi ham operandlar String pastki turining String yoki Variantidir, satrni taqqoslash kod moduli parametrlarining taqqoslash parametri asosida amalga oshiriladi. Bu taqqoslashlar har bir belgi asosida amalga oshiriladi. shu esta tutilsinki ramziy ifodalash Raqamni o'z ichiga olgan qator Yo'q raqamli qiymatlarning mos kelishi bilan bir xil:

Public Sub Example() Xira chap Variant sifatida Xira o'ng Variant sifatida chap = "42" o'ng = "5" Debug.Print chap > o'ng "False Debug.Print Val(chap) > Val(o'ng) "True End Subni chop etadi

Shu sababli, sonli tengsizlikni taqqoslashdan oldin String yoki Variant o'zgaruvchilari raqamlarga o'tkazilganligiga ishonch hosil qiling.

Agar operandlardan biri Sana bo'lsa, boshqa operand raqamli bo'lsa yoki raqamli turga aylantirilishi mumkin bo'lsa, asosiy juftlik bo'yicha raqamli taqqoslash amalga oshiriladi.

Agar boshqa operand joriy til yordamida Sana ga uzatilishi mumkin bo'lgan String yoki String pastki turining varianti bo'lsa, String Date ga uzatiladi. Agar uni joriy tilda Sana uchun qo'llash imkoni bo'lmasa, taqqoslash natijasi ish vaqti xatosi 13 bo'ladi - "Tip nomuvofiqligi".

Double yoki Single qiymatlari va mantiqiy qiymatlarni solishtirganda ehtiyot bo'lish kerak. Boshqa raqamli turlardan farqli o'laroq, VBA-ning Double-da suzuvchi nuqtali raqam yordamida taqqoslash ma'lumotlar turini targ'ib qilishdagi xatti-harakati tufayli nolga teng bo'lmagan qiymatlarni Haqiqiy deb hisoblash mumkin emas:

Public Sub Example() Dim Test As Double Test = 42 Debug.Print CBool(Test) "Prints True." True Double-ga ko'tariladi - Test Mantiqiy Debugga o'tkazilmaydi.Print Test = True "Noto'g'ri chop etadi" aniq translatsiyalar bilan: Debug.Print CBool(Test) = True "True Debug.Print CDbl(-1) = CDbl(True)" True End Subni chop etadi

Bu yerda barcha arifmetik operatorlar, taqqoslash operatorlari, mantiqiy operatorlar va birlashtirish operatorlari batafsil tavsiflangan. Men ushbu operatorlar haqida bilishingiz kerak bo'lgan hamma narsani to'plashga harakat qildim. Har bir bayonot misol bilan taqdim etiladi. Ta'riflar men tomonidan standart Help"a VB5 dan tarjima qilingan.

Arifmetik operatorlar

operator ^ (eksponentsiya)

Bu operator raqamni kattalikka oshirish uchun ishlatiladi.

Sintaksis:

natija = raqam^daraja

Variantlar:

natija
raqam
daraja- talab qilinadi; har qanday raqamli ifoda

Eslatmalar:

raqam faqat salbiy bo'lishi mumkin daraja- butun son. Agar bitta ifodada bir nechta ^ operatorlari ishlatilsa, u holda hisoblash chapdan o'ngga amalga oshiriladi. Odatda natija turi Double. Biroq, agar yoki daraja, yoki raqam- Demak, nol ifoda natija shuningdek Null.

Misol:

Xira MyValue
MyValue = 2^2" 4 ni qaytaradi.
MyValue = 2^3^3" Qaytadi 512 (2^3=8, 8^3=512)
MyValue = (-5)^3" Qaytadi -125.

Maslahat:

Agar siz raqamni doimiy quvvatga oshirishingiz kerak bo'lsa, unda bir nechta operatorlardan - ko'paytirishdan ko'ra - kuchga ko'tarishdan foydalanish yaxshiroqdir, o'zingiz uchun hukm qiling, ifodani hisoblash bilan million o'tish davri o'tdi:

test1 = 2^8" 893ms
test1 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 "130ms!

operator * (ko'paytirish)

Ikki raqamni ko'paytirish uchun ishlatiladi.

Sintaksis:

natija = raqam 1* raqam 2

Variantlar:

natija- talab qilinadi; har qanday raqamli o'zgaruvchi
raqam 1- majburiy; har qanday raqamli ifoda
raqam 2- majburiy; har qanday raqamli ifoda

Eslatmalar:

Natijaning ma'lumotlar turi odatda ikkita raqamning eng aniq turi bilan bir xil bo'ladi. Aniqlik tartibi, eng yuqoridan pastgacha: Bayt, Butun, Uzun, Yagona, Valyuta, Ikkilik, O'nlik. To'g'ri, istisnolar mavjud:

  • Agar Single va Long ko'paytirilsa, natija Double bo'ladi
  • Agar ma'lumotlar turi bo'lsa natija- Long Single yoki Date, ifodaning o'zi natijasini o'z ichiga olmaydi, keyin natija Double o'z ichiga olgan Variantga aylantiriladi.

Agar raqam 1 yoki raqam 2

Ko'paytirishda aniqlik tartibi qo'shish va ayirishda qo'llaniladiganidan farq qiladi.

Misol:

Xira MyValue
MyValue = 2 * 2 " 4 ni qaytaradi.
MyValue = 459,35 * MyValue " 495,35 * 4 qaytaradi

operator / (bo'linma)

Ikki raqamni ajratish va suzuvchi nuqta natijasini olish uchun ishlatiladi.

Sintaksis:

natija = raqam 1 / raqam 2

Variantlar:

natija- talab qilinadi; har qanday raqamli o'zgaruvchi
raqam 1- majburiy; har qanday raqamli ifoda
raqam 2- majburiy; har qanday raqamli ifoda

Eslatmalar:

Natija odatda Double turi. To'g'ri, istisnolar mavjud:

  • Agar ikkala ifoda Bayt, Integer, Single tipida bo'lsa, natija Single bo'ladi. Biroq, agar ifodaning o'lchamlari Single doirasiga to'g'ri kelmasa, xatolik yuzaga keladi.
  • Agar ikkala ifoda ifodasi ham Bayt, Integer yoki Single boʻlgan Variant turiga ega boʻlsa, natija Yagona Variant boʻladi. Biroq, agar ifodaning o'lchamlari Yagona Variantga mos kelmasa, u holda Double Variant.
  • Agar raqamlardan biri O'nlik turi bo'lsa, natija O'nlik bo'ladi.

Agar raqam 1 yoki raqam 2- Null, u holda oddiy 0 sifatida talqin qilinadi.

Misollar:

Xira MyValue
MyValue = 10/4" !} Qaytadi 2.5.
MyValue = 10/3 " Qaytadi 3.333333.

operator \ (butun bo'linish)

Ikki raqamni ajratish va butun sonni olish uchun ishlatiladi.

Sintaksis:

natija = raqam 1 \ raqam 2

Variantlar:

natija- talab qilinadi; har qanday raqamli o'zgaruvchi
raqam 1- majburiy; har qanday raqamli ifoda
raqam 2- majburiy; har qanday raqamli ifoda

Eslatmalar:

Bunday bo'linishdan oldin ifodalar Bayt, Butun yoki Uzoq ifodalarga yaxlitlanadi. Odatda natija ma'lumotlar turi Bayt, Bayt varianti, Integer, Integer varianti, Long yoki Long variantidir. Har qanday kasr qismi kesiladi.

Biroq, agar ifodalardan birortasi Null bo'lsa, natija Null bo'ladi. Empty ni o'z ichiga olgan har qanday ifoda 0 deb talqin qilinadi.

Misollar:

Xira MyValue
MyValue = 11\4" Qaytadi 2.
MyValue = 9\3" Qaytadi 3.
MyValue = 100\3" Qaytadi 33.

Mod operatori (bo'lim qoldig'i)

Ikki raqamni bo'lish va ularning bo'linishining qolgan qismini olish uchun ishlatiladi.

Sintaksis:

natija = raqam 1 Mod raqam 2

Variantlar:

natija- talab qilinadi; har qanday raqamli o'zgaruvchi
raqam 1- majburiy; har qanday raqamli ifoda
raqam 2- majburiy; har qanday raqamli ifoda

Eslatmalar:

Bo'lishda o'ng nuqtali raqamlar yaxlitlanadi. Masalan, quyidagi ifodaning natijasi 5 ga teng:

A=19 Tartib 6.7

Bu yerda nima bo'lyapti? Birinchidan, 6,7 raqami 7 ga yaxlitlanadi. Keyin bo'linish sodir bo'ladi, biz 2,7 ni olamiz .... Bo'linishning qolgan qismi = 5. (2 * 7 = 14, 19 - 14 = 5).

Natija odatda Bayt, Bayt varianti, Integer, Integer varianti, Long yoki Longni o'z ichiga olgan Variant turiga ega.

Agar ifodalardan birortasi Null bo'lsa, natija Null bo'ladi. Empty ni o'z ichiga olgan har qanday ifoda 0 deb talqin qilinadi.

Misollar:

Xira MyResult
MyResult = 10 Mod 5" Qaytadi 0.
MyResult = 10 mod 3" Qaytadi 1.
MyResult = 12 Mod 4.3" Qaytadi 0.
MyResult = 12.6 Mod 5" Qaytadi 3.

operator + (qo'shimcha)

Ikki raqamni qo'shish uchun ishlatiladi.

Sintaksis:

natija = ifoda 1+ifoda 2

Variantlar:

natija- talab qilinadi; har qanday raqamli o'zgaruvchi
ifoda 1
ifoda 2- majburiy; har qanday ifoda

Eslatmalar:

+ operatoridan foydalanganda siz satr qo'shish yoki birlashtirish sodir bo'lishini aniqlay olmaysiz. Birlashtirish uchun, chalkashmaslik va kodni o'qilishi mumkin bo'lgan qilish uchun & operatoridan foydalaning.

Agar ifodalardan biri Variant bo'lmasa, quyidagi qoidalar qo'llaniladi:

  • Agar ikkala ibora ham raqamli turdagi bo'lsa (bayt, mantiqiy, butun, uzun, bitta, ikki, sana, valyuta yoki o'nlik), ular qo'shiladi.
  • Ikkala satr ifodasi birlashtiruvchi bo'lsa.
  • Agar ifodalardan biri raqamli turdagi bo'lsa, ikkinchisi esa har qanday Variant qiymati, jumladan Null bo'lsa, qo'shish sodir bo'ladi.
  • Agar ifodalardan biri satr, ikkinchisi esa har qanday Variant qiymati bo'lsa, u holda birlashma sodir bo'ladi.
  • Agar ifodalardan biri bo'sh bo'lsa, ikkinchisi o'zgarmagan ifoda qaytariladi.
  • Agar iboralardan biri raqamli tip, ikkinchisi esa satr bo'lsa, Tip nomuvofiqligi xatosi yuzaga keladi.
  • Agar biron bir ifoda Null bo'lsa, natija ham Null bo'ladi.

Ikkala ifoda ham Variant bo'lsa, quyidagi qoidalar qo'llaniladi:

  • Agar ikkala ifoda ham raqamlar bo'lsa, ular qo'shiladi.
  • Agar ikkala ibora ham satr bo'lsa, ular birlashtiriladi.
  • Agar ifodalardan biri raqam, ikkinchisi esa satr bo'lsa, qo'shish sodir bo'ladi.

Oddiy qo'shish uchun, natijaning ma'lumotlar turi odatda ikkita raqamning eng aniq turi bilan bir xil bo'ladi. Aniqlik tartibi bayt, butun son, uzunlik, yagona, qo'sh, valyuta va o'nlikdir. Istisnolar mavjud:

  • Agar Single va Long qo'shilsa, natija Double bo'ladi
  • Agar Sana tipidagi ifoda boshqa har qanday ifoda bilan qo'shilsa, natija Sana bo'ladi.

Agar bitta yoki ikkala ifoda Null bo'lsa, natija ham Null bo'ladi. Agar ikkala ifodada Empty bo'lsa, natija butun son bo'ladi. Agar bitta bo'lsa, natijada o'zgarmagan ikkinchi ifoda qaytariladi.

Misollar:

Xira MyNumber, Var1, Var2
Mening raqamim = 2 + 2 " Qaytadi 4.
Mening raqamim = 4257.04 + 98112 " Qaytadi 102369.04.

Var1 = "34"
Var2 = 6 "Aralash o'zgaruvchilarni ishga tushiring
MyNumber = Var1 + Var2 " Qaytadi 40.

Var1 = "34"
Var2 = "6" "O'zgaruvchilarni satrlar bilan ishga tushiring
MyNumber = Var1 + Var2 " Qaytadi"346" (rod
"qo'shimcha emas, birlashma!).

Maslahat:

Qo'shish operatori (+) sanalarni qo'shish uchun ishlatilishi mumkin, ya'ni. Sana turi o'zgaruvchilari:

Dim d Sana sifatida
d = DateSerial (2002, 8, 15) " Sanani ishga tushirish 08/15/2002
d = d + 15 "Endi d 08/30/2002 sanani o'z ichiga oladi
"Ya'ni biz 15 kun qo'shdik

operator - (ayirish, belgini o'zgartirish)

Ikki son orasidagi farqni topish yoki ifoda belgisini oʻzgartirish uchun ham ishlatiladi.

Sintaksis:

natija = ifoda 1- ifoda 2

- ifoda

Variantlar:

natija- talab qilinadi; har qanday raqamli o'zgaruvchi
ifoda- majburiy; har qanday ifoda
ifoda 1- majburiy; har qanday ifoda
ifoda 2- majburiy; har qanday ifoda

Eslatmalar:

Birinchi sintaksisda ikkita raqam orasidagi farqni topish uchun "-" operatori kerak. Ikkinchi sintaksisda "-" belgisini o'zgartirish uchun ishlatiladi ifodalar.

Natijaning ma'lumotlar turi odatda ikkita raqamning eng aniq turi bilan bir xil bo'ladi. Aniqlik tartibi bayt, butun son, uzunlik, yagona, qo'sh, valyuta va o'nlikdir. Istisnolar mavjud:

  • Agar ayirishda Single va Long turlari ishtirok etsa, natija Double bo'ladi
  • Agar ayirish sana turidagi ifodadan foydalansa,
    keyin natija sana bo'ladi.
  • Ikki sanani ayirish Double natijani beradi.

Agar bitta yoki ikkala ifoda Null bo'lsa, natija ham Null bo'ladi. Agar ifodalardan biri Bo'sh bo'lsa, u 0 deb talqin qilinadi.

Qo'shish va ayirishda aniqlik tartibi ko'paytirishda qo'llaniladiganidan farq qiladi.

Misollar:

Xira MyResult
MyResult = 4 - 2 " Qaytadi 2.
MyResult = 459,35 - 334,90 " Qaytadi 124.45.

Maslahat:

Qo'shish operatori kabi ayirish operatori ham ikki sana orasidagi farqni (kunlarda) hisoblash uchun ishlatilishi mumkin:

Dim d1 Sana sifatida
D2 d2 Sana sifatida
Dim razn As Long
d1 = DateSerial (1983, 10, 14)
d2 = DateSerial (2002, 8, 15)
razn = d2 - d1 "kunlardagi farq (6880).

Taqqoslash operatorlari

Muayyan iboralarni solishtirish uchun ishlatiladi. Ularda 3 ta sintaksis mavjud:

Sintaksis:

natija = ifoda 1 taqqoslash operatori ifoda 2
natija = ob'ekt 1 Bu ob'ekt 2
natija = chiziq Kabi namuna

Variantlar:

natija talab qilinadi; har qanday raqamli o'zgaruvchi
ifoda Majburiy; har qanday ifodalangan
taqqoslash operatori talab qilinadi; har qanday taqqoslash operatori
ob'ekt talab qilinadi; har qanday ob'ektning nomi
chiziq talab qilinadi; har qanday satr ifodasi.
namuna talab qilinadi; har qanday satr ifodasi yoki harflar va raqamlar oralig'i

Eslatmalar:

Quyidagi jadvalda taqqoslash operatorlari ro'yxati va ifoda natijasini aniqlaydigan shartlar (to'g'ri yoki noto'g'ri) mavjud.

Operator

To'g'ri, agar

Agar yolg'on

Agar null

< (меньше чем) ifoda 1 <
ifoda 2
ifoda 1 >=
ifoda 2

bitta
dan
ifoda Nullni o'z ichiga oladi

<= (меньше или равно) ifoda 1 <=
ifoda 2
ifoda 1 >
ifoda 2
> (ko'proq) ifoda 1 >
ifoda 2
ifoda 1 <=
ifoda 2
>= (katta yoki teng) ifoda 1 >=
ifoda 2
ifoda 1 <
ifoda 2
= (teng) ifoda 1 =
ifoda 2
ifoda 1 <>
ifoda 2
<>(teng emas) ifoda 1 <>
ifoda 2
ifoda 1 =
ifoda 2

Is va Like operatorlari muayyan funktsiyalarni bajaradi va ularning taqqoslash jadvali ko'rsatilganidan farq qiladi (biz ularni quyida ko'rib chiqamiz).

Ikki ifoda solishtirilganda raqamlar yoki satrlar solishtirilishini aniqlash har doim ham mumkin emas. Quyida ikkala ifoda Variantdan boshqa turdagi bo'lsa, natija qanday hisoblanishi ko'rsatilgan:

  • Agar ikkala ifoda raqamlar bo'lsa (bayt, mantiqiy, butun, uzun, bitta, ikki, sana, valyuta yoki o'nlik), u holda raqamlar taqqoslanadi.
  • Agar ikkala ifoda ham satr bo'lsa, u holda satr taqqoslash sodir bo'ladi. (kichikroq satr birinchi va keyingi harflari kichikroq ascii kodiga ega bo'lgan chiziqdir).
  • Agar ifodalardan biri raqam bo'lsa, ikkinchisi esa raqam sifatida talqin qilinishi mumkin bo'lgan Variant bo'lsa, unda raqamlar taqqoslanadi.
  • Agar ifodalardan biri raqam bo'lsa va boshqa Variant raqam sifatida talqin etilmaydigan satr bo'lsa, unda xatolik yuzaga keladi (Tip nomuvofiqligi).
  • Agar ifodalardan biri satr bo'lsa, ikkinchisi esa har qanday Variant qiymati bo'lsa (hatto Null), u holda satr taqqoslash sodir bo'ladi.
  • Agar ifodalardan biri Bo'sh, ikkinchisi esa raqam bo'lsa, u holda raqamlarni taqqoslash sodir bo'ladi, bu erda Empty 0 deb hisoblanadi.
  • Agar ifodalardan biri Empty, ikkinchisi esa satr bo'lsa, u holda satr taqqoslash sodir bo'ladi, bu erda Empty bo'sh "" qatori sifatida ko'rib chiqiladi.

Agar birinchi ifoda ham, ikkinchisi ham Variant turiga ega bo'lsa, ifodalar Variant tarkibidagi ma'lumotlar turlari bo'yicha taqqoslanadi:

  • Agar ikkala Variant ifodasi ham raqamlarni o'z ichiga olsa, u holda raqamlar taqqoslanadi.
  • Agar ikkala Variant ifodasi satrlarni o'z ichiga olsa, u holda satrlar taqqoslanadi.
  • Agar Variant ifodalaridan birida raqam, ikkinchisida qator bo‘lsa, sonli ifoda bitta satrdan kichik bo‘ladi.
  • Agar Variant ifodalaridan biri Bo'sh, ikkinchisi esa raqam bo'lsa, Empty 0 deb hisoblanadi.
  • Agar Variant ifodalaridan biri Empty, ikkinchisi esa satr bo'lsa, Empty bo'sh "" qatori sifatida qabul qilinadi.
  • Agar ikkala ifoda ham bo'sh bo'lsa, ular teng deb hisoblanadi.

Single o'zgaruvchisi Double bilan solishtirilganda, Double Single aniqligiga yaxlitlanadi.

Agar Valyuta Single yoki Double bilan solishtirilsa, u holda Single yoki Double Valyutaga aylantiriladi. Xuddi shunday, o'nlikni Single yoki Double bilan solishtirganda, Single yoki Double o'nlikka aylantiriladi. Valyuta uchun .0001 dan kichik bo'lgan har qanday kasr qismi yo'qolishi mumkin. Decimal uchun bu qiymat 1E-28 yoki xatolik yuz berishi mumkin. Shunday qilib, kasr qismi yo'qolganda, ifodalar teng deb talqin qilinishi mumkin, garchi aslida biri boshqasidan farq qiladi. (oz miqdorda bo'lsa ham).

Misollar:

Xira MyResult, Var1, Var2
MyResult = (45< 35) " Qaytadi Yolg'on.
MyResult = (45 = 45) " Qaytadi To'g'ri.
MyResult = (4<> 3) " Qaytadi To'g'ri.
MyResult = ("5" > "4") " Qaytadi To'g'ri.

Var1 = "5": Var2 = 4 "VBda siz ikki nuqtadan foydalanishingiz mumkin,
"ayrimlarni ajratish uchun.

MyResult = (Var1 > Var2) " Qaytadi To'g'ri.

Var1 = 5: Var2 = Bo'sh
MyResult = (Var1 > Var2) " Qaytadi To'g'ri.

Var1 = 0: Var2 = Bo'sh
MyResult = (Var1 = Var2) " Qaytadi To'g'ri.

taqqoslash operatori Is

Bu operator ob'ekt o'zgaruvchilarini solishtirish uchun ishlatiladi.

Bu operatorning sintaksisi yuqorida keltirilgan.

Eslatmalar:

Agar ob'ekt1 va ob'ekt1 bir xil ob'ektga tegishli bo'lsa, natija True, bo'lmasa, False bo'ladi. Ikki o'zgaruvchi bir xil ob'ektga bir necha usulda murojaat qilishi mumkin. Quyidagi misolda A B bilan bir xil ob'ektga ishora qiladi:

A = B o'rnating

Quyidagi misol A va B o'zgaruvchilari bir xil ob'ektga - C ga tegishli bo'lishini ta'minlaydi:

A = C o'rnating
B = C o'rnating

Misollar:

Xira MyObject, YourObject, ThisObject, _
OtherObject, ThatObject, MyCheck

YourObject = MyObject-ni o'rnating "ob'ektlarga havolalar yaratish
ThisObject = MyObject-ni o'rnating
ThatObject = OtherObject-ni o'rnating
MyCheck = YourObject Is ThisObject " rostni qaytaradi.
MyCheck = ThatObject Is ThisObject " False qaytaradi.
"Biz MyObject deb taxmin qilamiz<>Boshqa ob'ekt
MyCheck = MyObject is ThatObject " False qaytaradi.

satrlarni taqqoslash operatori - Like

Satrlarni taqqoslash uchun Like operatori ishlatiladi.

Ushbu operatorning sintaksisi allaqachon yuqorida muhokama qilingan.

Izoh:

Ushbu operator Stringni Pattern niqobiga qarshi tekshirish uchun ishlatilishi mumkin. Bu Perldagi oddiy iboralarga deyarli o'xshash juda kuchli operator.

Shunday qilib, bu operator quyidagicha ishlaydi. Agar satr niqobga mos kelsa, natija to'g'ri bo'ladi. Agar yo'q bo'lsa - noto'g'ri. Agar ifodalardan biri Null bo'lsa, natija ham Null bo'ladi.

Like operatorining xatti-harakati standart satr taqqoslash turiga bog'liq. (Opsiyani solishtirish operatori).

Agar tur Ikkilik (ya'ni ikkilik taqqoslash) ga o'rnatilgan bo'lsa, u holda satrlar Ascii kodlari bo'yicha taqqoslanadi (turli kodlashlarda u boshqacha). Odatda quyidagi ketma-ketlik ishlatiladi:

A< B < E < Z < a < b < e < z < А < К < Я < а < к < я

Agar turi Matn (matnni taqqoslash) ga o'rnatilgan bo'lsa. Ushbu taqqoslash bilan ketma-ketlik avvalgisidan farq qiladi, bu erda katta va kichik harflar tengdir:

(A=a)< (А=а) < (B=b) < (E=e) < (К=к) < (Z=z) < (Я=я)

Like operatorining eng muhim vazifasi satrning niqobga tegishli ekanligini tekshirishdir. Niqobda quyidagi maxsus ingredientlardan foydalanish mumkin. belgilar:

Har qanday bitta belgi
* Nol yoki undan ortiq belgilar
# Har qanday raqam (0–9).
Charlistga kiradigan har qanday bitta belgi
[!charlist] Charlistga kiritilmagan har qanday bitta belgi

Bu erda tezkor eslatma. Maxsus o'z ichiga olgan niqobdagi satrning kimligini tekshirish uchun. belgilar (masalan, satrda [,?,#,],* belgilar mavjudligini tekshiring), keyin ularni kvadrat qavs ichiga olish kerak. Siz shunchaki alohida qavs [ yoki ] qo'yolmaysiz.

Belgilar ro'yxatini belgilashda siz chiziqcha (-) dan foydalanishingiz mumkin. Masalan, A dan Z gacha bo'lgan ketma-ketlikni belgilash uchun siz niqobni ishlatishingiz kerak. Qavslar ichidagi har bir narsada hech qanday chegaralovchi (boʻshliq, vergul va boshqalar) boʻlmasligi kerak, aks holda ular ham ketma-ketlikka kiritiladi.

Niqobdan foydalanishni tekshirishda boshqa muhim qoidalar mavjud:

  • Belgilar roʻyxatining boshidagi (!) belgisi ushbu roʻyxatga kiritilmagan belgilarni izlash zarurligini bildiradi. Agar siz belgining o'zini topishingiz kerak bo'lsa!, unda qavslar qo'yishingiz kerak [!].
  • (-) belgilar qatorini belgilash uchun ishlatiladi.
  • Belgilar diapazoni ko'rsatilganda, u ASCII kodlarida ortib borishi kerak. Bular. to'g'ri niqob, yoki yo'q.
  • Ketma-ketlik bo'sh "" qatori sifatida talqin qilinadi.

Misollar:

Xira MyCheck
MyCheck = "aBBBa" "a*a" kabi " Haqiqatni qaytaradi.
MyCheck = "F" kabi "" " rostni qaytaradi.
MyCheck = "F" "[!A-Z]" kabi "yolg'onni qaytaradi.
MyCheck = "a2a" "a#a" kabi " Haqiqatni qaytaradi.
MyCheck = "aM5b" "a#[!c-e]" kabi " Haqiqatni qaytaradi.
MyCheck = "BAT123khg" "B?T*" kabi " Haqiqatni qaytaradi.
MyCheck = "CAT123khg" "B?T*" kabi " Yolg'onni qaytaradi.

myString = "312T-87GD-8922"

Agar myString "###-##-####" kabi keyin ...

Satrlarni birlashtirish operatorlari

Aslida, Visual Basic-da satrlarni birlashtirish uchun siz faqat 2 ta operatordan foydalanishingiz mumkin. Bular & va +. + operatori yuqorida tavsiflangan. Keling, & operatori haqida gapiraylik.

satrlarni birlashtirish operatori - &

Ikki ifodani birlashtirish uchun ishlatiladi.

Sintaksis:

natija = ifoda 1 & ifoda 2

natija talab qilinadi; Har qanday String yoki Variant o'zgaruvchisi
ifoda 1 Majburiy; Har qanday ifoda
ifoda 2 Majburiy; Har qanday ifoda

Eslatmalar:

Agar ifoda satr bo'lmasa, u String Variantiga aylantiriladi. Natijadagi ma'lumotlar turi String bo'ladi, agar ikkala ifoda ham String turiga ega bo'lsa. Aks holda natija String Variant bo'ladi. Agar ikkala ifoda Null bo'lsa, natija ham Null bo'ladi. Biroq, agar ifodalardan faqat bittasi Null qiymatini o'z ichiga olsa, u bo'sh "" qatori sifatida talqin qilinadi. Empty, shuningdek, bo'sh "" qatori sifatida talqin qilinadi.

Misollar:

Xira MyStr
MyStr = "Salom" va "Dunyo"
" Qaytadi"Salom dunyo" qatori.
MyStr = "Tekshirish" & 123 & "Tekshirish"
" "CHECK 123 CHECK" qatorini qaytaradi.

Mantiqiy operatorlar

Bu operatorlarning eng qiziqarli guruhi. Dasturlashda siz ularning ishlashi va qo'llanilishini bilishingiz kerak (faqat Visual Basic-da emas).

Ulardan 6 tasi Visual Basic da mavjud. Keling, har bir operatorni batafsil ko'rib chiqaylik.

Va operator

Ikki ifoda ustidan mantiqiy ko‘paytirishni amalga oshirish uchun foydalaniladi.

Sintaksis:

natija = ifoda 1 Va ifoda 2

natija
ifoda 1 Majburiy; Har qanday ifoda
ifoda 2 Majburiy; Har qanday ifoda

Eslatmalar:

Quyidagi jadvalda And operatori qanday ishlashi ko'rsatilgan:

Agar ifoda1 =

, va ifoda2 =

Keyin natija =

To'g'ri To'g'ri To'g'ri
To'g'ri Yolg'on Yolg'on
To'g'ri Null Null
Yolg'on To'g'ri Yolg'on
Yolg'on Yolg'on Yolg'on
Yolg'on Null Yolg'on
Null To'g'ri Null
Null Yolg'on Yolg'on
Null Null Null

And operatori sonning bitlarini tekshirish uchun ham ishlatiladi. Bitlar uchun And operatori quyidagicha ishlaydi (chapdan o'ngga qarab)

0 0 0
0 1 0
1 0 0
1 1 1

Misollar:

Xira A, B, C, D, MyCheck
MyCheck = A > B va B > C " Qaytadi To'g'ri.
MyCheck = B > A va B > C " Qaytadi Yolg'on.
MyCheck = A > B va B > D " Qaytadi Null.
MyCheck = A va B " Qaytadi8 (bit taqqoslash).

Keling, oxirgi misolni batafsil ko'rib chiqaylik. 10 raqami bit sifatida quyidagicha ifodalanadi (tetrad sifatida, ya'ni 4 bit):

Va 8 raqami quyidagicha:

And operatori natijasida, yuqoridagi jadvalga muvofiq, biz quyidagilarni olamiz:

Bular. 8. Nima uchun biz buni qildik? Biz buni A raqamining to'rtinchi biti o'rnatilganligini tekshirish uchun qildik? B ni qabul qilib, biz bu bit o'rnatilganligini tasdiqladik.

Yoki operator

Ikkita ifodani mantiqiy qo‘shishni bajarish uchun ishlatiladi.

Sintaksis:

natija = ifoda 1 Yoki ifoda 2

natija talab qilinadi; Har qanday raqamli (jumladan, mantiqiy) o'zgaruvchi
ifoda 1 Majburiy; Har qanday ifoda
ifoda 2 Majburiy; Har qanday ifoda

Eslatmalar:

Quyidagi jadvalda Or operatori qanday ishlashi ko'rsatilgan:

Agar ifoda1 =

, va ifoda2 =

Keyin natija =

To'g'ri To'g'ri To'g'ri
To'g'ri Yolg'on To'g'ri
To'g'ri Null To'g'ri
Yolg'on To'g'ri To'g'ri
Yolg'on Yolg'on Yolg'on
Yolg'on Null Null
Null To'g'ri To'g'ri
Null Yolg'on Null
Null Null Null

Or operatori raqamning ma'lum bitlarini o'rnatish uchun ishlatiladi. Bitlar uchun Or operatori quyidagicha ishlaydi (chapdan o'ngga qarab)

0 0 0
0 1 1
1 0 1
1 1 1

Natija qalin harf bilan yozilgan.

Misollar:

Xira A, B, C, D, MyCheck
MyCheck = A > B Yoki B > C " Qaytadi To'g'ri.
MyCheck = B > A Yoki B > C " Qaytadi To'g'ri.
MyCheck = A > B Yoki B > D " Qaytadi To'g'ri.
MyCheck = B > D yoki B > A " Qaytadi Null.
MyCheck=A yoki 5" Qaytadi 15:

Keling, oxirgi misolni batafsil ko'rib chiqaylik. 10 raqami bit sifatida quyidagicha ifodalanadi (tetrad sifatida, ya'ni 4 bit):

Va 5 raqami:

Or operatorining ishlashi natijasida yuqoridagi jadvalga muvofiq biz quyidagilarni olamiz:

Bular. 15. Ko'rib turganingizdek, Or operatori nafaqat taqqoslash ifodalarida, balki sonning ma'lum bitlarini o'rnatish uchun ham juda oson va qulay.

Xor operatori

Ikki ifodaning mantiqiy inkorini bajarish uchun ishlatiladi.

Sintaksis:

natija = ifoda 1 Xor ifoda 2

natija talab qilinadi; Har qanday raqamli (jumladan, mantiqiy) o'zgaruvchi
ifoda 1 Majburiy; Har qanday ifoda
ifoda 2 Majburiy; Har qanday ifoda

Eslatmalar:

Quyidagi jadvalda Xor operatori qanday ishlashi ko'rsatilgan:

Xor operatori raqamning ma'lum bitlarini o'zgartirish uchun ishlatiladi. Bitlar uchun Xor operatori quyidagicha ishlaydi (chapdan o'ngga qarab)

0 0 0
0 1 1
1 0 1
1 1 0

Natija qalin harf bilan yozilgan. Xor ning Or dan farqi shundaki, ikkala bit ham bitta bo'lsa, Xor 0 ni hosil qiladi. Xor operatorining qiziqarli xususiyati shundaki, u ikki marta ishlatilganda bir xil sonni hosil qiladi. Bu ko'pincha kriptografiyada qo'llaniladi.

Misollar:

Xira A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null
MyCheck = A > B Xor B > C " Qaytadi Yolg'on.
MyCheck = B > A Xor B > C " Qaytadi To'g'ri.
MyCheck = B > A Xor C > B " Qaytadi Yolg'on.
MyCheck = B > D Xor A > B " Qaytadi Null.
MyCheck = A Xor B " Qaytadi 2

Xor operatoridan foydalanishning qiziqarli misoli ikkita raqamli o'zgaruvchining qiymatlarini almashishdir:

Dim a Uzunligicha, b Uzunligicha
a = 4
b = 7
a = a Xor b
b = a Xor b
a = a Xor b

Endi a o'zgaruvchisi b o'zgaruvchining qiymatini o'z ichiga oladi va aksincha.

Operator emas

Ikki ifodaning mantiqiy inversiyasini bajarish uchun foydalaniladi.

Sintaksis:

natija= Yo'q ifoda

natija talab qilinadi; Har qanday raqamli (jumladan, mantiqiy) o'zgaruvchi
ifoda Majburiy; Har qanday ifoda

Eslatmalar:

Quyidagi jadvalda Not operatori qanday ishlashi ko'rsatilgan:

Not operatori barcha bitlarni o'zgartiradi ifodalar. Bitlar uchun Not operatori quyidagicha ishlaydi (chapdan o'ngga qarab):

0 1
1 0

Natija qalin harf bilan yozilgan.

Misollar:

Xira A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null
MyCheck = Yo'q (A > B) " Qaytadi Yolg'on.
MyCheck = Yo'q (B > A)" Qaytadi To'g'ri.
MyCheck = Yo'q (C > D) " Qaytadi Null.
MyCheck = A emas " Qaytadi-11 (barcha bitlar teskari)

Keling, oxirgi misolni batafsil ko'rib chiqaylik. 10 raqami bit sifatida quyidagicha ifodalanadi (bayt sifatida, ya'ni 8 bit):

Barcha bitlarni o'zgartirgandan so'ng, biz quyidagilarni olamiz:

Va bu -11.

Ekv operatori

Ikki ifoda orasidagi mantiqiy ekvivalentlikni amalga oshirish uchun foydalaniladi.

Sintaksis:

natija = ifoda 1 ekv ifoda 2

natija talab qilinadi; Har qanday raqamli (jumladan, mantiqiy) o'zgaruvchi
ifoda 1 Majburiy; Har qanday ifoda
ifoda 2 Majburiy; Har qanday ifoda

Eslatmalar:

Quyidagi jadvalda Eqv operatori qanday ishlashi ko'rsatilgan:

Bitlar uchun Eqv operatori quyidagicha ishlaydi (chapdan o'ngga qarab)

0 0 1
0 1 0
1 0 0
1 1 1

Misollar:

Xira A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null
MyCheck = A > B Eqv B > C " Qaytadi To'g'ri.
MyCheck = B > A Eqv B > C " Qaytadi Yolg'on.
MyCheck = A > B Eqv B > D " Qaytadi Null.
MyCheck = A Eqv B " Qaytadi -3

Import operatori

Ikki iboraning mantiqiy ifodasini bajarish uchun foydalaniladi.

Sintaksis:

natija = ifoda 1 Imp ifoda 2

natija talab qilinadi; Har qanday raqamli (jumladan, mantiqiy) o'zgaruvchi
ifoda 1 Majburiy; Har qanday ifoda
ifoda 2 Majburiy; Har qanday ifoda

Eslatmalar:

Quyidagi jadvalda Imp operatori qanday ishlashi ko'rsatilgan:

Agar ifoda1 =

, va ifoda2 =

Keyin natija =

To'g'ri To'g'ri To'g'ri
To'g'ri Yolg'on Yolg'on
To'g'ri Null Null
Yolg'on To'g'ri To'g'ri
Yolg'on Yolg'on To'g'ri
Yolg'on Null To'g'ri
Null To'g'ri To'g'ri
Null Yolg'on Null
Null Null Null

Bitlar uchun Imp operatori quyidagicha ishlaydi (chapdan o'ngga qarab)

0 0 1
0 1 1
1 0 0
1 1 1

Misollar:

Xira A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null
MyCheck = A > B Imp B > C " Qaytadi To'g'ri.
MyCheck = A > B Imp C > B " Qaytadi Yolg'on.
MyCheck = B > A Imp C > B " Qaytadi To'g'ri.
MyCheck = B > A Imp C > D " Qaytadi To'g'ri.
MyCheck = C > D Imp B > A " Qaytadi Null.
MyCheck = B Imp A " -1 qaytaradi

Til ko'rsatmalari (yoki operatorlar)- bu ba'zi harakatlarni bajaradigan yoki ma'lumotlarni tavsiflovchi dastur birliklari.

Bayonot bir yoki bir nechta kalit so'zlarni va ehtimol parametrlarni o'z ichiga oladi. Xuddi shu dastur qatorida joylashgan bir nechta bayonotlar bir-biridan ikki nuqta bilan ajratiladi. Agar bayonot juda uzun bo'lsa, uni buzish uchun pastki chiziq _ belgisidan foydalanib, uni bir nechta qatorlarga bo'lishingiz mumkin.

HAQIDA P tuzatuvchi topshiriqlar

Belgilash operatori dasturni bajarish jarayonida o'zgaruvchiga yangi qiymat berish uchun ishlatiladi. Topshiriq belgisi "=".

Masalan, operator:

x = Sqr(5 + Tan(1,8)^2)

x o'zgaruvchiga ifoda qiymatini belgilaydi. O'ng tomonda yozilgan ifodani hisoblash natijasida biz haqiqiy sonni olamiz. Ammo x o'zgaruvchisiga tayinlanadigan qiymat ushbu o'zgaruvchining turi qanday e'lon qilinganiga bog'liq. Demak, agar x o'zgaruvchisi Single turi bo'lsa, unga 4,834464, Double bo'lsa, 4,83446368725481, Integer bo'lsa, 5 natija beriladi.

X o'zgaruvchisining ma'lumotlar turi ushbu ifodaning ma'lumotlar turiga mos kelishi kerak. Topshiriq davomida bir turdan ikkinchi turga yashirin konvertatsiya qilishdan tashqari, Visual Basic funksiyalar yordamida turlarni aylantirish imkoniyatini beradi. Masalan, funktsiya CDbl ma'lumotlarni Double turiga o'zgartiradi, CInt- Integer turiga, Clng- uzun turga, CSng- Yagona turga, CStr– Stringni yozish va h.k.

CInt va Clng funksiyalari natijani yaxlitlaydi. Bundan tashqari, agar raqamning kasr qismi 0,5 bo'lsa, yaxlitlash eng yaqin juft songa amalga oshiriladi.

Tayinlash operatori nafaqat o'zgaruvchiga qiymat belgilash, balki VBA ob'ektlari xususiyatlarining qiymatlarini o'rnatish imkonini beradi. Masalan, operator

Qatorlar("1:1").Shrift. Qalin = To'g'ri

Ishchi varaqning birinchi qatoridagi shriftni qalin qiladi.

YANGI SATR

Kombinatsiya<Пробел> + <Знак подчеркивания>satr oxirida keyingi satr avvalgisining davomi ekanligini ta'minlaydi. Shu bilan birga, shuni yodda tutishimiz kerak:

§ Oʻrash orqali satr konstantalarini buzolmaydi

§ Xuddi shu qatorning ettitadan ortiq davomiga yo'l qo'yilmaydi

§ Satrning o'zi 1024 ta belgidan oshmasligi kerak

Misol.

Noto'g'ri uzatish To'g'ri uzatish

Line = "Visual Basic for _ Line = "Visual Basic" _

Ilovalar" va "Ilovalar uchun"

IZOHLAR

Dasturda (") belgisidan keyingi satr oxirigacha bo'lgan matn kompilyator tomonidan e'tiborga olinmaydi va izoh hisoblanadi.Izohlar dasturga tushuntirish va tavsif qo'shish uchun ishlatiladi.Izohlar dasturni disk raskadrovka qilishda foydalidir: ular imkon beradi. disk raskadrovka paytida dastur qatorlarini vaqtincha o'chirib qo'yishingiz mumkin.

Shartli operator

Shartli gap shart ifodasining qiymatiga qarab ma'lum ko'rsatmalarni (bayonotlarni) bajaradi. Vaziyatni tekshirish uchun blok diagrammasi quyidagicha ko'rinadi:

Guruch. 1. Tarmoqlanish tugallanmagan bo'lishi mumkin (bu tuzilma aylanma deb ham ataladi).

Guruch. 2. Shartli gap sintaksisning ikki shakliga ega: satr va blok.

Kichik harf shakli

Agar holat Keyin [ operatorlar_agar_haqiqat]

Shaklda keltirilgan algoritm. 1, kichik harflar bilan yoziladi

Agar holat Keyin operatorlar_agar_haqiqat Boshqa operators_if_false

2-rasm kirishga mos keladi

Agar holat Keyin operatorlar_agar_haqiqat

3-rasm kirishga mos keladi

Agar holat Keyin Boshqa operators_if_false

Blok shakli

Agar shart-1 Keyin

[operatorlar_agar shart – 1_true]

[operatorlar_agar_barcha_shartlar_noto'g'ri]]

If va ElseIf qismlarida keltirilgan shartlar relyatsion ifodalar yoki mantiqiy ifodalardir. Shartlardan biri bajarilganda, unga mos keladigan Then kalit so'zidan keyingi gaplar bajariladi, qolgan operatorlar e'tiborga olinmaydi (ya'ni, boshqa hech qanday test o'tkazilmaydi va nazorat End If dan keyingi operatorga o'tkaziladi). Agar mantiqiy shartlarning hech biri to'g'ri bo'lmasa, unda operatorlar_agar_barcha_oldingi_shartlar_noto'g'ri, yoki agar bu qism o'tkazib yuborilsa, boshqaruv shartli bayonotdan keyin dastur qatoriga o'tkaziladi.

If iborasining blok shakli afzalroq, agar:

Shart bajarilganda yoki bajarilmasa, bir nechta buyruqlar bajariladi (bu holda chiziq shaklidan ham foydalanish mumkin, lekin chiziq juda uzun va dastur kamroq tushunarli bo'ladi);

Bir nechta shartlar ketma-ket tekshiriladi va keyingi shart bajarilganda keyingi shartlarni tekshirish o'rinli emas (shuning uchun ElseIf kalit so'zi ishlatiladi).

Misol

Kompaniya ulgurji xaridorlarga chegirmalar beradi.

Buyurtmaning ma'lum hajmiga asoslanib, uning narxini aniqlash kerak.

Buyurtma narxini hisoblash uchun biz funktsiyadan foydalanamiz:

Ommaviy funktsiya Buyurtma_narxi(Miqdori) ikki barobar

Miqdor bo'lsa<= 999 Then

Buyurtma_narxi = Miqdor * 5

ElseIf miqdori<= 1999 Then

Buyurtma_narxi = Miqdor * 4.8

Buyurtma_narxi = Miqdor * 4,75

Bunday holda, IF operatorining kichik harf shaklidan foydalanish mumkin edi:

Ommaviy funktsiya Order_Cost1(Miqdori uzunligi) Ikki barobar

Miqdor bo'lsa<= 999 Then Стоимость_заказа1 = Количество * 5

Miqdor >= 1000 va miqdori bo'lsa<= 1999 Then Стоимость_­ заказа1 = Количество * 4.8

Miqdor >= 2000 bo'lsa, Buyurtma_narxi1 = Miqdor * 4,75

Agar biz chiziqlar uzun bo'lgan kamchiliklarni hisobga olmasak va har qanday buyurtma hajmi uchun barcha tekshiruvlar ketma-ket amalga oshiriladi (birinchi protsedura kichik buyurtma hajmlari uchun tezroq ishlaydi), unda dastur to'g'ri yozilgan va, ehtimol, yanada aniqroq.

Biroq, misollar keltirish mumkinki, agar shartlardan biri bajarilgan bo'lsa (yoki bajarilmasa), qolganlari oddiygina tekshirilmaydi.

Masalan, shartlar birgalikda bajarilganda ba'zi operatorlar bajarilishi kerak: http://po-teme.com.ua/images/adIIIin/image014_e652e49476c6f0eb9cf40b68cc090828.gif" alt="" width="56" height="27 src="> Agar tekshirish uchun operatordan foydalaning

Agar x>0 va y bo'lsa

u holda x manfiy bo'lsa, sqr funksiyasini chaqirganda xatolik yuzaga keladi (ildiz manfiy son).

Dizayn yordamida ushbu xatodan qochish mumkin

Agar x > 0 bo'lsa, y bo'lsa< Sqr(x) Then

Yozuvning oxirgi shaklida, agar Else kalit so'zi bo'lsa, u oxirgi If iborasiga ishora qiladi.

Tanlash operatori

Case-ni tanlang ifoda

[ko'rsatmalar_boshqa]]

Ifodaning parametri har qanday sonli yoki qatorli ifodadir. Mantiqiy shartni baholash o'rniga, ifoda qiymati parametr tomonidan ko'rsatilgan qiymatlarning har biri bilan taqqoslanadi. ifoda_roʻyxati-n.

Taqqoslash uchun qiymatlar kiritilgan ifoda_roʻyxati-n, shaklda ko'rsatilishi mumkin:

- qiymatlar;

- shakldagi qiymatlar diapazoni boshlang'ich_qiymat Kimga yakuniy_qiymat;

– Is ko‘rinishidagi taqqoslash ifodalari taqqoslash_operator qiymati;

- sanab o'tilgan har qanday ibora turlarining ro'yxati (ajratuvchi - vergul).

Ko'rsatma ixtiyoriy sonli Case bloklarini o'z ichiga olishi mumkin. Agar shartlarning hech biri to'g'ri bo'lmasa, Case Else blokidagi operatorlar bajariladi.

Misol uchun, agar shart uchdan yuqori ball bo'lsa, bu shart yozilishi mumkin: 4, 5 yoki holat >3 yoki holat >= 4 yoki 4 dan 5 gacha.

Eslatma. Is kalit so'zini kiritish shart emas, u avtomatik ravishda qo'shiladi.

Misol

Select Case konstruktsiyasidan foydalangan holda chegirmali narx bilan yuqoridagi misolni quyidagicha hal qilish mumkin:

Ommaviy funktsiya Order_Cost2(Miqdori uzunligi) Ikki barobar

Koson miqdorini tanlang

Buyurtma_narxi2 = Miqdor * 5

1000-dan 1999-yilgacha

Buyurtma_narxi2 = Miqdor * 4.8

Vaziyat >= 2000

Buyurtma_narxi2 = Miqdor * 4,75

Odatda, taqqoslash operatsiyalari operatsiyalarning keyingi borishi to'g'risida qaror qabul qilish uchun loop operatorlarida qo'llaniladi.

Har qanday taqqoslash operatsiyasining natijasi mantiqiy qiymatdir: True, False.

Taqqoslash ifodasidagi ikkala operand ham bir xil ma'lumotlar turiga ega bo'lsa, VBA ushbu tur uchun oddiy taqqoslashni amalga oshiradi.

Taqqoslash ifodasidagi har ikkala operandning o'ziga xos turlari bo'lsa va turlar mos kelmasa, VBA turga mos kelmaslik xatosini chiqaradi.

Taqqoslash ifodasidagi bitta yoki ikkala operand Variant turidagi o'zgaruvchilar bo'lsa, VBA Variant turini mos keladigan turga aylantirishga harakat qiladi.

String taqqoslash

Satrlarni relyatsion operatorlar bilan solishtirganda, VBA har bir satrni chapdan o'ngga belgi bo'yicha taqqoslaydi.

VBA-da, agar ikkala satr aynan bir xil tartibda aynan bir xil belgilardan iborat bo'lsa va ikkala satr bir xil uzunlikda bo'lsa, bitta satr boshqasiga teng bo'ladi. Masalan, "abcd" "abcd" "abcd" qatorlari bir-biriga teng emas, chunki VBA satrlarni taqqoslashda bosh yoki keyingi bo'shliq belgilarini e'tiborsiz qoldirmaydi.

O'zgaruvchan uzunlikdagi satrlarni taqqoslashda ehtiyot bo'lishingiz kerak.

Ikkilik va matn qatorlarini taqqoslash

Matnni saqlash uchun kompyuter har bir ko'rsatilgan belgi o'ziga xos raqamga ega bo'lgan sxemadan foydalanadi. Alfavitning barcha harflari o'ziga xos raqamlarga ega. Odatda, katta harflar kichik harflarga qaraganda kichikroq raqamlarga ega. Muayyan harf yoki belgiga mos keladigan raqam chaqiriladi belgilar kodi.

Satr ma'lumotlarini ikkilik taqqoslashda VBA har bir belgi uchun sonning ikkilik ekvivalentidan foydalanadi. Ushbu taqqoslash usuli deyiladi ikkilik yoki ikkilik va standart taqqoslash usuli hisoblanadi.

Chunki katta harflar kichik ikkilik raqamlarga ega, katta harflar kichik harflardan oldin alifbo tartibida belgilanadi. Shuning uchun satrlarni ikkilik taqqoslash vaqtida "ABV" qatori "abc" qatoridan kichikroq bo'ladi.


Matnli satrlarni solishtirganda, VBA belgilarning ikkilik ekvivalentidan foydalanmaydi va katta va kichik harflarni "ajratmaydi". Matnni taqqoslashda "abc" qatori "ABC" qatoriga teng.

Satrni taqqoslash usulini tanlash uchun Option Compare direktivasidan foydalaning


Variantni solishtirish


Ushbu direktiv modul deklaratsiyasi sohasida bo'lishi kerak.

Satrlarni birlashtirish

Bir satrni boshqasiga qo'shish deyiladi qatorni birlashtirish.

Satrlarni birlashtirish odatda ko'rsatish uchun xabar yaratish uchun protsedurada turli manbalardan satrlarni shakllantirish uchun ishlatiladi. VBA-da qatorlarni birlashtirish uchun ikkita operator mavjud.

Birlashtiruvchi operator (&)

VBA-dagi (&) operatori faqat satrlarni birlashtirish uchun ishlatiladi.

Sintaksis


Operand_1 & Operand_2 [& Operand_3..]


Operand_N har qanday to'g'ri satr yoki raqamli ifodadir (u qatorga aylantiriladi).

Satrlarni birlashtirish natijasining ma'lumotlar turi - String.

Agar satr birikmasi ifodasidagi operand Bo'sh yoki Null bo'lsa, VBA bu operandni nol uzunlikdagi satr sifatida izohlaydi (belgilarsiz qator).

Eslatma! Birlashtirish amalining belgisi (&) o'zgaruvchi nomidan bo'sh joy bilan ajratilishi kerak, chunki aks holda, VBA belgini Long turini belgilash belgisi sifatida talqin qilishi mumkin.

Satrlarni birlashtirishda qo‘shish operatori

Satrlarni birlashtirish uchun (+) operatoridan ham foydalanishingiz mumkin.

Bu operator (&) operatori bilan bir xil sintaksis va talablarga ega. Biroq, VBA-da (+) operatorining asosiy maqsadi arifmetik qo'shish ekanligini tushuning. Shuning uchun, dastur kodini o'qishda noaniqlikka yo'l qo'ymaslik uchun satrlarni birlashtirish uchun (&) operatoridan foydalanish tavsiya etiladi.

Operatsion ustuvorliklari

Dastur kodidagi ko'pgina ifodalar murakkab (kompozit), ya'ni. ikki yoki undan ortiq ifodalardan iborat.

Murakkab ifodalarni baholashda VBA quyidagi qoidalarga amal qiladi:

  • Qavslar ichidagi ifoda qismlari har doim birinchi bo'lib baholanadi;
  • Muayyan operatsiyalar operator ierarxiyasiga qarab amalga oshiriladi (quyidagi jadval);
  • Agar operator ierarxiyasi teng bo'lsa, ular chapdan o'ngga qarab baholanadi.
Operator