Vba mantiqiy yoki. VBA operatorlari va o'rnatilgan funktsiyalari. Noto'g'ri uzatish To'g'ri uzatish
Parametr nomi | Ma'nosi |
Maqola mavzusi: | VBA operatorlari |
Rubrika (tematik toifa) | Dasturlash |
VBA operator tilidir. Bu shuni anglatadiki, uning dasturlari (protseduralari yoki funktsiyalari) bayonotlar ketma-ketligini ifodalaydi.
VBA tilida biz farqlashimiz mumkin quyidagi guruhlar operatorlar:
1. dastur ishlaydigan ob'ektlarni tavsiflash uchun mo'ljallangan deklarativ operatorlar (o'zgaruvchilar turlari, doimiylar va massivlar va boshqalar),
2. sharh bayonotlari,
3. ob'ekt qiymatlarini belgilash va o'zgartirish operatorlari,
4. hisob-kitoblarning borishini boshqaruvchi operatorlar (shartli, siklik, o'tish).
IN bu kurs Asosiy operatorlar ko'rib chiqiladi va ba'zilari, masalan, tsikliklar uch turda taqdim etiladi, ammo talabalar foydalanish uchun eng tushunarli bo'lgan faqat bittasini o'zlashtirishlari kerak.
Sharh operatori
Sharhlar dasturning bajarilishiga ta'sir qilmaydi, lekin algoritmni tushunish uchun zarurdir. Dasturlar ko'p marta yangilanganligi sababli, algoritmni eslab qolish va uni to'g'ri o'zgartirish uchun sharhlardan foydalanish juda muhimdir.
Dastur matnining istalgan qatori izoh bilan tugashi mumkin. VBA-dagi sharh apostrof (") bilan boshlanadi va qatorning o'ng tomonidagi istalgan matnni o'z ichiga oladi.
Masalan,
Og'irligi= vazn+z "Og'irlikni oshirish qiymati=vazn*narx "Yangi narx
Tayinlash operatori
Tayinlash operatorlari dastur holatini (o'zgaruvchan qiymatlarni) o'zgartirishning asosiy vositasidir. Bu = belgisini o'zgaruvchi (chap tomon) va ifoda (o'ng tomon) o'rtasida bog'laydigan konstruktsiyadir. Ifoda operandlar (o‘zgaruvchilar nomlari, konstantalar, standart funksiyalar nomlari) va amallar belgilaridan (arifmetik, mantiqiy, satr, taqqoslash) iborat. Ushbu operatorning ma'nosi shundaki, chap tomonga o'ng tomonning qiymati beriladi.
Nazorat bayonotlari
VBA boshqaruv bayonotlari to'plami mos keladi tuzilgan til dasturlash. IN bu to'plam kiritilgan shartli va aylanma gaplar, bu sizga hisoblash jarayonini ishonchli va samarali tashkil qilish imkonini beradi.
Shartli gap If Then Else End If
Bu dasturlash tillarida tez-tez ishlatiladigan hisob-kitoblarni boshqarish operatori bo'lib, ma'lum bir shartning haqiqatiga asoslangan harakatlarni tanlash va bajarish imkonini beradi.
VBA operatorlari - tushunchasi va turlari. "VBA operatorlari" toifasining tasnifi va xususiyatlari 2017, 2018.
TRIZda Dialning ushbu toifasi "34-sonli printsip, qismlarni tashlash va qayta tiklash: a) O'z maqsadini bajargan yoki keraksiz holga kelgan ob'ektning bir qismi tashlab yuborilishi (eritish, bug'lanishi va boshqalar) yoki o'zgartirilishi kerak. bevosita ish jarayonida. b)... .
Guruch. 12.1 Formaga joylashtirilgan obyektlar 6. Formada har bir obyektni alohida faollashtirib, xususiyatlar oynasi yordamida uning xossasini o rnatamiz (Xususiyatlar 12.2-rasm). Shunday qilib, interfeys yaratiladi (12.3-rasm). Guruch. 12.3. Loyiha interfeysi (bilan... .
Murakkab operator. Strukturaviy operatorlar Protsedura chaqiruvi operatori Shartsiz o'tish operatori Shartsiz o'tish operatori bajarilish tartibini o'zgartirish imkoniyatini beradi... .
Ba'zan, muammolarni hal qilishda, filiallardagi operatorlar, o'z navbatida, boshqa shartli operatorlarni o'z ichiga olishi mumkin bo'lgan vaziyat yuzaga keladi. Bular birikma operatorlar deyiladi. Bundan tashqari, investitsiyalar soni yoki ular aytganidek, investitsiyalar darajasi ... bo'lishi mumkin.
Visual Basic Ilova uchun (VBA) - bu eng oddiy dasturlash tillaridan biri va Excel elektron jadvalining barcha hisoblash imkoniyatlarining kombinatsiyasi. VBA-dan foydalanib, siz turli xil ilovalarni osongina va tezda yaratishingiz mumkin, hatto bu sohada mutaxassis bo'lmasdan ham...
Qisqacha nazariy ma'lumotlar
1. VBA dasturlash tilining sintaksisi va semantikasi
Dasturlash tilining sintaksisi - bu to'g'ri tuzilgan dastur (hujjat) yoki uning fragmenti deb hisoblangan alifbo belgilar kombinatsiyasini tavsiflovchi qoidalar to'plami.
Bu tilning asosiy sintaktik tamoyillari quyidagilardan iborat:
- VBA katta-kichik harflarga sezgir emas;
- kodni satr oxirigacha izohlash uchun foydalaning yagona iqtibos(") yoki REM buyrug'i;
- belgilar qiymatlari qo'sh tirnoq ichiga olinishi kerak (");
- VBA-dagi har qanday nomning maksimal uzunligi (o'zgaruvchilar, konstantalar, protseduralar) 255 belgi;
- yangi bayonotning boshlanishi - o'tkazish yangi qator(C, Java, JavaScript-dagi kabi nuqta-vergul buning uchun ishlatilmaydi);
- bo'yicha cheklovlar maksimal uzunlik hech qanday satr yo'q (garchi muharrirda bir qatorga faqat 308 belgi to'g'ri keladi). Xuddi shu qatordagi bir nechta gaplar ikki nuqta bilan ajratiladi:
"Check 1" MsgBox: "Check 2" xabar qutisi - O'qish qulayligi uchun siz bo'sh joy va undan keyin pastki chiziq yordamida bir nechta jismoniy chiziqlarni bitta mantiqiy chiziqqa birlashtira olasiz:
MsgBox "Foydalanuvchiga xabar" _
&vUserName
Tilning semantikasi so'zlarning semantik ma'nosidir. Dasturlashda - operatorlarning boshlang'ich semantik ma'nosi, asosiy til konstruktsiyalari va boshqalar.
Operator VBA kodining bajarilishi mumkin bo'lgan eng kichik birligi. Bayonot o'zgaruvchini e'lon qilishi yoki belgilashi, VBA kompilyator opsiyasini o'rnatishi yoki dasturda ba'zi amallarni bajarishi mumkin.
Arifmetika VBA-da faqat 7 ta operator mavjud.
To'rtta standart: qo'shish (+), ayirish (−), ko'paytirish (*), bo'lish (/) va yana uchta:
- eksponentatsiya (^). Masalan, 2^3 = 8;
- butun songa bo'linish (\). Birinchi raqamni ikkinchisiga ajratadi, kasr qismini tashlab (yaxlitlashsiz). Masalan, 5\2 = 2;
- modul bo'limi (Mod). Birinchi raqamni ikkinchisiga ajratadi, faqat bo'linishning qolgan qismini qaytaradi. Masalan, 5 Mod 2 = 1.
VBA da tayinlash operatori tenglik belgisidir. Siz buni shunday yozishingiz mumkin:
nVar = 10 bo'lsin
yoki undan ham oddiyroq:
nVar = 10
Bu yerda tenglik belgisini tenglik operatori bilan aralashtirib yubormang. Oxirgi ifoda "nVar qiymatini 10 ga o'rnatish" degan ma'noni anglatadi va agar chiziq quyidagicha ko'rinsa: If (nVar = 10) , u holda "nVar qiymati 10 bo'lsa" degan ma'noni anglatadi.
Taqqoslash operatorlari VBA-da faqat 8 tasi mavjud:
- tenglik (=). Masalan, If (nVar = 10);
- (>) dan katta va (10) dan kichik;
- dan katta yoki teng (>=) va kichik yoki teng (= 10);
- teng emas (). Masalan, If(nVar10);
- ob'ektlarni taqqoslash (Is). Ob'ekt o'zgaruvchilari bir xil ob'ektga yoki boshqa ob'ektga tegishli ekanligini aniqlaydi. Masalan, If (obj1 - obj2);
- o'xshashlik (Like). String obyektini naqsh bilan solishtiradi va naqsh mos kelishini aniqlaydi.
Taqqoslash operatorlari har doim qaytib keladi To'g'ri(agar bayonot to'g'ri bo'lsa) yoki Yolg'on(agar bayonot noto'g'ri bo'lsa).
Ko'pincha, bir nechta shartlarni tekshirishda ular foydalanadilar mantiqiy operatorlar:
- Va - mantiqiy VA.Ikkala shart ham to'g'ri bo'lishi kerak;
- Yoki - mantiqiy OR. Shartlardan kamida bittasi to'g'ri bo'lishi kerak;
- Emas - mantiqiy inkor. Agar shart noto'g'ri bo'lsa, True qiymatini qaytaradi;
- Xor - bu mantiqiy istisno. E1 Xor ifodasida E2 faqat E1 = True yoki faqat E2 = Rost, aks holda False bo'lsa, True ni qaytaradi;
- Ekv - ikkita ifodaning ekvivalentligi, agar ular bir xil qiymatga ega bo'lsa, True ni qaytaradi;
- Imp - implikatsiya, E1 Imp E2, agar E1 = rost va E2 = noto'g'ri bo'lsa, False qiymatini qaytaradi, aks holda True.
haqida eslab qolishingiz kerak Va, Yoki, Yo'q, boshqa mantiqiy operatorlar kam ishlatiladi.
O'zgaruvchilar- Bu o'zgaruvchan ma'lumotlarni saqlash uchun konteynerlar. Ularsiz deyarli hech qanday dastur ishlamaydi. Oddiylik uchun o'zgaruvchini shkafdagi raqam bilan solishtirish mumkin - siz shkafga ba'zi ma'lumotlarni berasiz va javoban sizga raqam beriladi. Ushbu ma'lumot yana kerak bo'lganda, siz "raqamni taqdim etasiz" va uni olasiz.
Har bir o'zgaruvchining nomi bor. O'zgaruvchiga nom bilan kirish mumkin. VBA-da nomlarni tanlash qoidalari ko'p elementlar uchun bir xil (o'zgaruvchilar, doimiylar, funktsiyalar, protseduralar va boshqalar):
- ism harf bilan boshlanishi kerak;
- bo'shliqlar yoki tinish belgilaridan iborat bo'lmasligi kerak (istisno - pastki chiziq);
- maksimal uzunlik - 255 belgi;
- joriy miqyosda noyob bo'lishi kerak
- zahiradagi so'zlardan (kod muharriri oynasida ko'k rang bilan belgilangan) foydalanish mumkin emas.
VBA dasturlarini yaratishda ob'ektlarni nomlash qoidalarini - nomlash konventsiyasini tanlash tavsiya etiladi. Eng ko'p ishlatiladigan Vengriya kelishuvi (Microsoft dasturchilaridan biri, millati venger bo'lgan Charlz Simoni sharafiga):
- O'zgaruvchining nomi kichik harflar bilan yozilgan prefiks bilan boshlanishi kerak. Prefiks ushbu o'zgaruvchida aniq nima saqlanishini ko'rsatadi:
str (yoki s) - satr, belgilar qiymati;
fn (yoki f) - funksiya;
kichik tartib;
c (yoki ismning barcha harflari bosh harf bilan yozilgan) - doimiy(o'zgaruvchilardan farqli o'laroq, VBA dasturini bajarish jarayonida o'zgarmaydigan ma'lumotlarni saqlash uchun konteyner);
b - mantiqiy, mantiqiy qiymat (True yoki False);
d - sana;
obj (yoki o) - ob'ektga havola;
n - raqamli qiymat; - funksiyalar, usullar nomlari va qo‘shma so‘zdagi har bir so‘z bosh harf bilan boshlanishi kerak:
MsgBox objMyDocument.Name
Sub CheckDateSub()
Ma'lumotlar turi har qanday dasturlash tilining eng asosiy tushunchalari hisoblanadi. Ma'lumotlar turi qiymat (o'zgaruvchi yoki doimiy) qabul qilishi mumkin bo'lgan haqiqiy qiymatlar to'plamini va ushbu qiymatda bajarilishi mumkin bo'lgan harakatlar to'plamini belgilaydi.
2. Asosiy VBA ma'lumotlar turlari
VBA quyidagi ma'lumotlar turlarini taqdim etadi:
- raqamli:
Bayt- 0 dan 255 gacha bo'lgan butun son, saqlash uchun zarur 1 bayt xotira;
Butun son- −32,768 dan 32,767 gacha bo‘lgan butun son, 2 bayt ;
Uzoq- −2 147 483 648 dan 2 147 483 647 gacha boʻlgan katta butun son, 4 bayt ;
Valyuta(pul) - katta kasrli raqam 19 ta pozitsiya, shu jumladan 4 kasr
(-922337203685477.5808 dan 922337203685477.5807 gacha), 4 bayt,
aniqlik juda muhim bo'lganda raqamlarni saqlash uchun ishlatiladi, bu pul birliklari bilan hisoblashda sodir bo'ladi;
O'nlik- 29 pozitsiyadan iborat kattaroq o'nlik raqam (o'nli nuqtadan keyin siz 0 dan 28 pozitsiyagacha foydalanishingiz mumkin), 8 bayt;
Yagona Va Ikki marta- suzuvchi nuqta qiymatlari ( 4 va 8 bayt)
(salbiy qiymatlar uchun -3,402823·10 38 dan -1,401298·10 -45 gacha va
Single uchun ijobiy qiymatlar uchun 1,401298·10 -45 dan 3,402823·10 38 gacha va
-1,79769313486232·10 308 dan -4,94065645841247·10 -324 gacha salbiy qiymatlar va
Double uchun ijobiy qiymatlar uchun 4,94065645841247·10 -324 dan 1,79769313486232·10 308 gacha); - string( String o'zgaruvchan uzunlik (taxminan 2 milliard belgigacha) va qattiq uzunlik (taxminan 65 400 belgigacha));
- sana va vaqt ( Sana- 01.01.100 dan 31.12.9999 gacha), 8 bayt;
- mantiqiy ( Mantiqiy- faqat True va False qiymatlarini saqlashi mumkin), 2 bayt;
- ob'ekt ( Ob'ekt- istalgan ob'ektga havolani xotirada saqlaydi);
- Variant- har qanday turdagi ma'lumotlarni saqlashi mumkin bo'lgan maxsus ma'lumotlar turi; 16 bayt +1
- matematik, raqamlar bo'yicha bajarilgan, ularning natijasi raqamlar;
- relyatsion operatsiyalar nafaqat raqamlarga qo'llanilishi mumkin, ularning natijasi mantiqiy turdagi qiymatdir;
- mantiqiy, ishlatiladi mantiqiy ifodalar va ularning natijasi boolean qiymatlardir.
3. Operatsion ustuvorliklari
Ustuvorlik | Operatsiya |
1 2 3 4 5 6 7 8 9 10 11 12 |
Funktsiya chaqiruvi va qavslar ^ - (belgi o'zgarishi) *, / \ Mod +, – >, <, >=, <=, <>, = Yo'q Va Yoki Xor |
4. Matematik funksiyalar
Funktsiya | Qaytish qiymati | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abs(<число>) | Raqamning moduli (mutlaq qiymat). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Atn(<число>) | Arktangent | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Cos(<число>) | Kosinus | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Muddati (<число>) | Eksponent, ya'ni tabiiy logarifm asosini belgilangan quvvatga ko'tarish natijasi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jurnali(<число>) | Tabiiy logarifm | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rnd (<число>) | [, Sarlavha] oraliqdan tasodifiy raqam
Argumentlar: Xabar - oynada ko'rsatiladigan axborot xabarini belgilaydigan talab qilinadigan argument. Belgi bilan birlashtirilgan bir nechta matn qatorlaridan iborat bo'lishi mumkin & . Ushbu argumentda foydalanish Chr(13) axborotni chiqarishda yangi qatorga olib keladi. Tugmalar - bu argumentning qiymati oynada paydo bo'ladigan tugmalar toifalarini aniqlaydi. Tugma argumentining qiymati, shuningdek, oynada biron bir belgi paydo bo'lishini aniqlaydi. Xabar oynasida qaysi tugmalar ko'rsatilishini belgilamasangiz, OK tugmasiga mos keladigan standart qiymat ishlatiladi. Jadvalda 3.1 xabar oynasidagi tugmalar va piktogrammalarning mumkin bo'lgan kombinatsiyalarini ko'rsatadi. Sarlavha - oyna sarlavhasini o'rnatadi. Funktsiya MsgBox dialog oynasida qaysi tugma bosilganligini ko'rsatuvchi Integer qiymatini qaytaradi. 3.1-jadval. Yaroqli tugma o'zgaruvchan qiymatlari
Masalan. Joriy sana haqida xabarni ko'rsatish. "Taqvimdagi bugun" va sana, "Diqqat" xabar qutisi Natijada quyidagi oyna paydo bo'ladi (3.1-rasm). OK tugmasini bosgandan so'ng, xabarlar oynasi yopiladi va dasturning bajarilishi MsgBox qo'ng'irog'idan so'ng darhol bayonotdan davom ettiriladi. 3.3.2. Funktsiya InputBox Funktsiya InputBox Kirish oynasi yordamida o'zgaruvchan qiymatlarni kiritadi va quyidagi sintaksisga ega: O'zgaruvchi_nomi = InputBox(Xabar[, Sarlavha] ) Argumentlar: Xabar - talab qilinadigan argument. Oynada odatda kiritilgan qiymatning ma'nosini tushuntiruvchi axborot xabarini o'rnatadi. Sarlavha - oyna sarlavhasini o'rnatadi. Masalan, N o'zgaruvchining qiymatini klaviaturadan kiriting, standart qiymat 10 ga teng. Buning uchun siz quyidagi operatordan foydalanishingiz mumkin: N = InputBox("Enter N", "Kirish kiritish",10) Natijada N o'zgaruvchining qiymatini kiritish uchun quyidagi oyna paydo bo'ladi (3.2-rasm). Agar standart qiymat foydalanuvchi uchun maqbul bo'lsa, "OK" tugmasini bosgandan so'ng, kiritish oynasi yopiladi, N o'zgaruvchisi 10 ga o'rnatiladi va dasturning bajarilishi qo'ng'iroq ortidagi bayonotdan davom etadi. InputBox. Agar standart qiymat foydalanuvchi uchun mos bo'lmasa, OK tugmasini bosishdan oldin N o'zgaruvchisi uchun kerakli qiymatni kiritishingiz kerak. 3 .4. Shartli IF bayonoti VBA-da tarmoqlanuvchi hisoblash jarayonini amalga oshirish uchun operator ishlatiladi Agar... Keyin... Aks holda, bu holatni tekshirishning eng oddiy shakli. U quyidagi sintaksisga ega: AgarSHARTKeyinOPERATOR_1ElseOPERATOR_2 OPERATOR_1 bajarilgan bo'lsa SHART rost, aks holda bajariladi OPERATOR_2. Bunda If...Then...Else operatori bir qatorga yoziladi. SHART mantiqiy ifodadir. Ifodaning natijasi har doim mantiqiy bo'ladi. Ifoda oddiy yoki murakkab bo'lishi mumkin. Oddiy shartlarni yozishda jadvalda keltirilgan barcha mumkin bo'lgan relyatsion operatsiyalardan foydalanish mumkin. 3.2. Jadval3 .2. Mantiqiy munosabatlar
Mantiqiy amallar va qavslar yordamida oddiylardan murakkab shartlar tuziladi. Mantiqiy operatsiyalar ro'yxati jadvalda keltirilgan. 3.3. Jadval3 .3. Mantiqiy operatsiyalar
Shartli gapda har qanday gap o‘rniga gaplar blokidan foydalanishga ruxsat beriladi. Bu holda shartli operator quyidagicha ko'rinadi: AgarSHARTKeyin BLOCK_OPERATORS_1 BLOCK_OPERATORS_2 Oxiri If Shartli bayonot bir nechta shartlarni sinab ko'rishi mumkin. Bu holda shartli operator quyidagicha ko'rinadi: AgarCONDITION_1Keyin BLOCK_OPERATORS_1 ElseIfCONDITION_2Keyin BLOCK_OPERATORS_2 Boshqa OxiriAgar 1-misol. Shakldagi algoritm uchun dasturning bir qismini yozing. 3.3. 2-misol. Shakldagi algoritm uchun dasturning bir qismini yozing. 3.4. 3.5. Case operatorini tanlang Select Case operatori amaldagi qiymatlarning chekli to'plamiga ega bo'lgan ba'zi ifodaning qiymatiga qarab turli amallarni bajarish kerak bo'lganda foydalidir. U shartli gaplar bilan ham bog'liq, ammo boshqa shaklga ega: Case-ni tanlangSINOV OLDIRGAN ibora CaseVALUES_1 OPERATORS_1 CaseQIYMATLAR_ 2 OPERATORLAR_ 2 . . . CaseVALUES_N OPERATORLAR_N [ CaseBoshqa BOSHQA_ OPERATORLAR] Tanlovni tugatish SINOV OLDIRGAN ibora realdan boshqa har qanday skalyar tipda bo'lishi mumkin. QIYMATLAR vergul bilan ajratilgan ixtiyoriy miqdordagi qiymatlar yoki diapazonlardan iborat. Turi QIYMATLAR turiga mos kelishi kerak TEST_EXPRESSION. Avval hisoblab chiqiladi SINOV OLDIRGAN ibora. Agar uning qiymati qiymatlardan biriga mos kelsa VALUES_I, keyin ular bajariladi OPERATORS_I Tanlovni tugatish. Agar uning qiymati biron bir qiymatga mos kelmasa VALUES_I, keyin ular bajariladi ELSE_OPERATORS va boshqaruv undan keyin turgan operatorga o'tkaziladi Tanlovni tugatish Masalan. Shakldagi algoritm uchun dasturning bir qismini yozing. n o'zgaruvchining qiymatiga qarab S o'zgaruvchining qiymatini aniqlaydigan 3.5. 3.6. Loop bayonotlari Tsiklik hisoblash jarayonini amalga oshirish uchun, ya'ni bir yoki bir nechta operatorlarning takroriy bajarilishi uchun sikl operatori ishlatiladi. Uchun...Keyingi, quyidagi sintaksisga ega: UchunCOUNTER=START_VALUEToCON_VALUEQadamQADAM OPERATOR_BLOCK
OPERATOR_BLOCK KeyingisiCOUNTER For...Keyingi tsikli oʻzgaruvchining qiymatlari boʻylab oʻtadi COUNTER, ko'rsatilgan o'zgartirish bosqichi bilan dastlabki qiymatdan yakuniy qiymatgacha bo'lgan tsikl parametri. Bu har bir yangi hisoblagich qiymati bilan halqa tanasi bayonotlari blokining bajarilishini ta'minlaydi. Agar QadamQADAM dizaynda yo'q bo'lsa, sukut bo'yicha qadam 1 ga teng deb qabul qilinadi. Operatorga ko'ra Chiqish uchun oldin loop bayonotidan chiqishingiz mumkin COUNTER oxirgi qiymatga etadi.* O'xshash ob'ektlar guruhidagi ob'ektlarni takrorlash uchun, masalan, diapazon yoki massiv elementlarining kataklari, tsikl operatoridan foydalanish qulay. Uchun…Har bir...Keyingi. Har birigaElementInGuruh BLOK_ OPERATORLAR
OPERATOR_BLOCK KeyingisiElement VBA-da noma'lum takroriy sonli sikllarni tashkil qilish uchun boshqa sikl operatorlari ishlatiladi: oldingi shartli tsikllar - DoVaholanki … Loop, Dogacha … Loop; postshartli tsikllar - Do … LoopVaholanki, Do … Loopgacha. Quyida ushbu tsikl iboralarining sintaksisi keltirilgan: "Oldin shart bilan tsiklDo Vaholanki … Loop Do whileSHART OPERATOR_BLOCK
OPERATOR_BLOCK "Oldin shart bilan tsiklDo gacha … Loop DogachaSHART OPERATOR_BLOCK
OPERATOR_BLOCK "Postshart bilan tsiklDo … Loop while BLOK_ OPERATORLAR
OPERATOR_BLOCK Loop whileSHART "Postshart bilan tsiklDo … Qachongacha aylanish BLOK_ OPERATORLAR
OPERATOR_BLOCK Qachongacha aylanishSHART Operator DoVhile...Loop qadar bayonotlar blokining bir necha marta takrorlanishini ta'minlaydi SHART kuzatiladi va operator Boshqa yangiliklar 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).
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, u holda bu shart yozilishi mumkin: 4, 5 yoki Case Is >3 yoki Case Is >= 4 yoki 4 dan 5 gacha. Eslatma. Kalit so'z 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 VBA dasturi - bu bayonotlar ketma-ketligi. Dasturlarni yozishda bir qator qoidalarga rioya qilish kerak. Shunday qilib, bir qatorga bir nechta bayonotlarni joylashtirish mumkin. Xuddi shu qatordagi gaplar orasiga ikki nuqta qo'yiladi. Har qanday qatorni birinchisining oxiriga “Bo‘sh joy” + “Pastki chiziq” (_) belgilarini qo‘yish orqali ikkiga bo‘lish mumkin, bu holda ikkinchi qator birinchisining davomi hisoblanadi. Sharhlar dasturni o'qishni osonlashtirish uchun ishlatiladi. VBA-da sharhlarni kiritishning ikki yo'li mavjud: chiziqning istalgan joyiga joylashtirilishi mumkin bo'lgan apostrof (') va apostrof o'rniga zaxiralangan Rem so'zidan foydalanish. 1. Dim operatori o'zgaruvchilar turlarini e'lon qilish uchun mo'ljallangan. 1. A butun son sifatida xiralashtiring – A o'zgaruvchisi butun son sifatida e'lon qilinadi, ya'ni. u faqat butun son qiymatlarini saqlaydi
. 2.
Xira D sana sifatida - D o'zgaruvchisi sanalarni saqlash uchun e'lon qilinadi.
3.
Xira familiya, satr sifatida ism - o'zgaruvchilar e'lon qilinadi. Matnni saqlash uchun mo'ljallangan familiya va ism.
4.
Dim B(12) butun son sifatida – 12 ta butun sondan iborat bir oʻlchovli massiv (vektor) eʼlon qilinadi va sukut boʻyicha massivning birinchi elementi B(0), oxirgisi esa B(12) boʻladi.
5.
Dim B(3,3) Yakka holda – haqiqiy sonlardan iborat ikki o'lchovli 3x3 massiv (matritsa) e'lon qilinadi.
Agar o'zgaruvchi turi ko'rsatilmagan bo'lsa, standart turi Variant hisoblanadi. Biroq, o'zgaruvchilarning ma'lum bir turini ko'rsatish dasturni yanada ishonchli qiladi va uning ishlashini tezlashtiradi, chunki VBA har safar kirishda e'lon qilinmagan o'zgaruvchini tanib olish uchun vaqt sarflashi shart emas. Agar M massivning o'lchami oldindan ma'lum bo'lmasa va dastur davomida aniqlansa, u holda massivni tavsiflashda elementlar soni ko'rsatilmaydi va massiv quyidagicha aniqlanadi: Dim M() butun son sifatida Massiv elementlarining sonini aniqlagandan so'ng, masalan, N, operatorni yozish kerak 2. Tayinlash operatori o'zgaruvchiga qiymat berish uchun mo'ljallangan. Sintaksis: O'zgaruvchi (yoki ob'ekt xususiyati) = ifoda. 1. a=5 – A o'zgaruvchisiga 5 qiymatini belgilang
; 2. b=“Menejer” – o'zgaruvchi b tayinlash"Menejer" degan ma'noni anglatadi; · Manzil=Vraqalar("Tashkilotlar").Yacheykalar(2,2) – Joriy ish kitobidagi Tashkilotlar varag'ida joylashgan B2 katak tarkibini Manzil o'zgaruvchisiga belgilang;
Familiya=UserForm1.TextBox1.Text – o'zgaruvchan Familiya UserForm1 foydalanuvchi shaklining TextBox1 maydonining mazmuniga beriladi.
o Bilan/Izoh bilan tugaydi dasturchini bir xil ob'ekt nomini ko'p takrorlashdan qutqaradi. Sintaksis: Ob'ekt bilan operator1 operator2 operatorN Masalan, gaplar ketma-ketligi o'rniga UserForm1.TextBox1.Text = Sana UserForm1.TextBox2.Text = " " UserForm1.ComboBox1.Text = " " shunday yozish mumkin TextBox1.Text = Sana .
TextBox2.Text = " " .
ComboBox1.Text = " " REM A ustunidagi Sheet1 varag'ida, ikkinchi qatordan boshlab, "xodimlar tariflari" yoziladi. UserForm1 foydalanuvchi formasida ComboBox1 kombinatsiya oynasini to'ldiring ‘Dasturning birinchi qatori – Sheet1 varag‘ida A ustunidagi ‘to‘ldirilgan katakchalar soni hisoblanadi, natija ‘N o‘zgaruvchisiga tayinlanadi. N=Application.CountA(Sheets(“Sheet1”).Range(“A:A”)). D=”A2:A”&Cint(N) Sheets("Sheet1").Range(D).Name="Tariflar" TextBox1.Text = Sana .
TextBox2.Text = " " .
ComboBox1.Text = " " .
ComboBox1.Rowsource = "Tariflar" 1. Shartli gap If/Then/Else– muayyan holatni tekshirish va tekshirish natijalariga qarab u yoki bu harakatni bajarish imkonini beradi Sintaksis: Agar holat Keyin operatorlar1 [ Boshqa operatorlar2] Agar shart rost bo'lsa, u holda ko'rsatmalar1 bajariladi, aks holda operatorlar2 bajariladi. Blok sifatida yozilgan murakkab shartli operatordan ham foydalanish mumkin: Agar shart 1 Keyin operatorlar 1 ElseIf shart 2 Keyin operatorlar2 operatorlar 3 Familiya=.TextBox1.Text Agar familiya ="" Keyin MsgBox"Siz familiyani kiritmagansiz" REM 1-sonli katakcha belgilansa, mijozga 5% chegirma beriladi ‘ Summa – mijoz tomonidan to‘langan pul summasi ‘ Mahsulot tannarxi Xarajatlar o‘zgaruvchisida saqlanadi Agar UserForm1.CheckBox1.Value = rost bo'lsa Miqdor=Xarajat-xarajat*0,05 Boshqa miqdor = Narx 1) REM Tarif belgilangan tarif, Vaqt esa ishlagan vaqt deb faraz qilaylik. Vaqt va tarif mos ravishda TextBox1 va TextBox2 da kiritish maydonlariga kiritiladi. Ish haqi Tarif*Vaqt formulasi bo'yicha hisoblanadi. Hisoblangan ish haqini shaklda aks ettirish dasturini yozamiz. Label4 - "ish haqi qiymatini ko'rsatish" uchun tayyorlangan yozuv If IsNumeric(TextBox1.Text)=True va _ IsNumeric(TextBox2.Text)=To'g'ri, keyin Tarif=TextBox1.Text Vaqt=TextBox2.Text Label4.Caption=Tarif*Vaqt Birinchi misolda biz birinchi raqamli foydalanuvchi formasi bilan ishlaymiz. O'zgaruvchan Familiya birinchi raqamli kirish maydonining mazmuni tayinlanadi. Keyin kiritish maydoniga biror narsa kiritilgan yoki yo'qligini tekshiradi (o'zgaruvchi bo'sh yoki yo'qmi) Familiya). Agar o'zgaruvchi bo'lsa Familiya bo'sh bo'lsa, ekranda xabar oynasi ko'rsatiladi. Ikkinchi misolda, REM so'zi bilan boshlangan birinchi qatorlar va apostroflar o'zgaruvchilarning maqsadini tushuntiruvchi izohlardir. Shartli operator mijoz tomonidan to'langan miqdorni belgilaydi. Uchinchi misol raqamlar kiritish maydonlariga kiritilganligini tekshiradi. Agar raqamlar ikkita maydonga kiritilgan bo'lsa, u holda o'zgaruvchilarga kirish maydonlarining qiymatlari tayinlanadi va yorliq tarifni vaqtga ko'paytirish natijasining qiymati bilan belgilanadi. 1) Shartsiz o'tish operatori O'tish dastur ichida belgilangan qatorga o'tishni ko'rsatish uchun mo'ljallangan. Sintaksis: GoTo String Kerakli argument String har qanday satr yorlig'i yoki qator raqami bo'lishi mumkin. Agar IsNumeric(TextBox1.Text)=False bo'lsa, o'tish xatosi Xato: MsgBox "Raqamlarni kiritishda xato!" Yuqoridagi misol birinchi kiritish maydoniga raqam kiritilgan yoki yo'qligini tekshiradi. Agar kiritilgan raqam raqam bo'lmasa, u holda Xato yorlig'i bilan chiziq ko'chiriladi va ekranda xabar paydo bo'ladi. 2) sikl operatori Uchun/Kimga/Keyingi takrorlanuvchi fragmentlarni dasturlash uchun mo'ljallangan, ya'ni. siklik algoritmlarni tavsiflash. Sintaksis: Uchun o'zgaruvchi=M1 Kimga M2 [ Qadam M3] operatorlar M1, M2, M3 – ifodalar. O'zgaruvchi (hisoblagich) M3 ko'rsatilgan qadam bilan M1 boshlang'ich qiymatidan M2 yakuniy qiymatiga o'zgarganda, tsikl bayonoti bir guruh bayonotlarning bajarilishini takrorlaydi. Agar qadam ko'rsatilmagan bo'lsa, u 1 deb qabul qilinadi. Familiya = Varaqlar ("Xodimlar"). Hujayralar (I,1) UserForm1.ComboBox1.AddItem Familiyasi Keltirilgan misolda, "Xodimlar" varag'ining birinchi ustunida birinchi raqamli foydalanuvchi shaklidagi birinchi kombinatsiya ro'yxatiga kiritilishi kerak bo'lgan xodimlarning ismlari mavjud deb taxmin qilinadi. Dasturning ishlash algoritmi: 1) I o'zgaruvchiga 2 qiymati beriladi. 2) Familiya o‘zgaruvchisiga “Xodimlar” varag‘ida joylashgan A(I,1) katak qiymati beriladi. (Tsikl birinchi marta bajarilganda, bu A(2,1) katakdir) 3) ComboBox1 kombinatsiya oynasi ro'yxatiga Familiya o'zgaruvchisidan element qo'shiladi. 4) I o'zgaruvchining qiymatiga 1 qo'shiladi (agar qadam ko'rsatilmagan bo'lsa, u 1 ga teng deb hisoblanadi). Tekshirish I ning qiymati 10 dan oshib ketganligini tekshirish amalga oshiriladi (I o'zgaruvchining yakuniy qiymati, M3=10 misolida)? Agar I qiymati hatto 10 dan kichik yoki teng bo'lsa, u holda 2-4 bosqichlar bajariladi, aks holda tsikl tugaydi. Shunday qilib, yuqoridagi dastur ComboBox1 ro'yxatini ma'lumotlar bilan to'ldirish imkonini beradi. Yechishda ishlatiladigan asosiy algoritmlar Keling, quyidagi misol yordamida asosiy algoritmlarni ko'rib chiqaylik. Shartnoma bo'yicha ishlarni bajarishda turli bo'limlarning xodimlari ishtirok etishdi. "Sheet1" varag'idagi jadvalda har bir xodim ishlagan soatlar soni to'g'risidagi ma'lumotlar keltirilgan (8-rasm). 8-rasm. Ishlagan soatlar soni bo'yicha ma'lumotlar kompaniya xodimlari |