Ochiq
Yopish

VBA excel misollarini tanlang. Visual Basic dasturlash tili. Filial dasturlash. VBA Select Case Statement sintaksisi

VBA-ning shartli o'tish operatori juda ko'p turli xil kod tarmoqlaridan tanlash kerak bo'lgan hollarda foydalanish uchun mavjud: operator TanlangCase(ko'p tanlovli tuzilmani amalga oshirish juda qulay). Agar, lekin kodni yozgan va ushbu kodni o'qigan kishi uchun tushunarliroqdir. Bu operator operatorga qaraganda samaraliroq AgarKeyinBoshqa.

Kalit so'zlar TanlangCase ko'p operatorlar bilan ishlatiladi Case, bu erda har bir operator Case boshqa holatning yuzaga kelishini tekshiradi va filiallardan faqat bittasi bajariladi Case.Filial Case bir, bir nechta yoki VBA bayonotlarini o'z ichiga olishi mumkin.

Case-ni tanlang– ifoda qiymatiga qarab bir necha operator bloklaridan birini bajaruvchi boshqaruv operatori.

TanlangCase tanlash_ifodasi

[ Case Ifodalar_roʻyxati_1

[Operator_Block_1]

[Case Expression_list_2 ]

[Operator_block_2]]

……………………………………………………………………………

[E ishilse

[Operator_Block_N]]

EndSsaylash

– Tanlash_ifoda – har qanday raqamli yoki ramziy ifoda;

– Expression_list – har bir ro‘yxat vergul bilan ajratilgan mantiqiy ifodalar ro‘yxati; Choice_expression bilan bir xil turga ega;

– Statement_block – istalgan sonli VBA bayonotlarini o‘z ichiga oladi.

Bayonotni bajarayotganda TanlangCase VBA birinchi navbatda Selection_Expression ni baholaydi, va keyin ushbu ifoda natijasini har bir Ifoda_roʻyxatida keltirilgan har bir ifoda bilan solishtiradi . Agar qiymat Selection_Expression bilan ifodalansa Expression_List dagi ifodaga mos keladi biri uchun Case,VBA ushbu bayonot uchun StatementBlock-ni bajaradi Case.Agar Selection_Expression qiymati bir nechta operatorga mos keladi Case,VBA faqat bayonotlarni bajaradi Birinchisida mos keladigan jumla Case.Ko'pincha tanlov_ifodasi mantiqiy ifoda emas, balki bitta o'zgaruvchining matematik yoki raqamli nomidir. Ifodalar_roʻyxatidagi ifodalar - Bu odatda mantiqiy ifodalar.

Birinchi mos keluvchi bayonotdagi gaplar bajarilishini tugatgandan so'ng Case VBA kodni bajarishda davom etadi keyingi birinchi bayonotdan kalit so'zlar OxiriTanlang, bu oxirini bildiradi TanlangCase.

Agar Selection_Expression qiymati bo'lsa hech biriga mos kelmaydi Case, va ixtiyoriy CaseBoshqa mavjud bo'lsa, VBA Statement_Block_N bilan ifodalangan bayonotlarni bajaradi keyin operatorga o'tishdan oldin TanlangCase. Operator bloki E ishilse Faqat Selection_Expression shartlardan hech birini qoniqtirmasagina bajariladi Case. Odatda keraksiz qiymatlarni qayta ishlash uchun ishlatiladi. Operator harakati TanlangCase rasmda ko'rsatilgan blok diagrammasi bilan tasvirlangan. 5.

5-rasm. Dizaynning blok diagrammasi TanlangCase

Ifodalar roʻyxati elementlari quyidagi uchta shakldan biriga ega boʻlishi kerak:

Ifoda_1, Ifoda_2, …, Ifoda_N

Ifoda To Ifoda

Is Operatsiya bilan ifodalash

– Ifoda_ – tanlash ifodasi bilan bir xil turdagi har qanday raqamli, ramziy yoki mantiqiy ifoda;

– Operatsiya bilan ifoda – quyidagi amallardan birini o‘z ichiga olgan ifoda:<, <=, >, >=, < >, =.

Agar kalit so'z ishlatilsa Bu ifoda chegaralarini aniqlash uchun birinchi navbatda kichikroq qiymat kelishi kerak. Masalan, blokli bayonotlar Holat -1 dan -5 gacha Agar Selection_Expression -4 bo'lsa, bajarilmaydi. Bu qator shunday yozilishi kerak Holat -5 dan -1 gacha.

Taqqoslash operatsiyalari faqat kalit so'z bilan ishlatilishi mumkin Bu, tenglik operatsiyasi bundan mustasno. Agar kalit bo'lmasa Bu aqlli muharrir uni kerakli joyga joylashtiradi.

Har bir shartda bir nechta ifoda yoki chegaralardan foydalanishingiz mumkin Case. Masalan, Holat 1 dan 4 gacha, 7 dan 9 gacha, 11, 13, Is > n %.

4-misol. Xarid miqdoriga qarab chegirma hisoblaydigan dastur.

Sub skidka()

“Chegirmaning ta’rifi (%) qarab

"sotilgan tovarlar miqdori

Xira skidka Butun son sifatida

Xira xulosa Yagona sifatida

summa = InputBox(“Xarid summasini kiriting”, “Chegirmani hisoblash”, 0)

Agar summa > 0 Keyin

Case-ni tanlang xulosa

Case Is > 1000

Case Is > 500

Boshqa holat

Tanlovni tugatish

MsgBox"Chegirma" va skidka va "%"

MsgBox"Xarid miqdori ko'rsatilmagan"

Va bugungi postda biz VBA tanlovi ishi bayonini muhokama qilamiz. VBA Select Case dan murakkab Excel Nested If iboralari o'rniga foydalanish mumkin. Bu VBA kodini tezroq bajarish va tushunishni osonlashtiradi.

Select-Case bayonoti (ba'zi tillarda Switch Case deb ham ataladi) turli holatlar (qiymatlar) uchun o'zgaruvchi yoki ifodani tekshiradi. Agar holatlardan biri rost bo'lsa, faqat o'sha holat bajariladi va dastur qolgan barcha holatlarga e'tibor bermaydi.

Agar esingizda bo'lsa, bizning oxirgi postimizda "qanday qilib qila olasiz" haqida gaplashdik.

VBA Select Case Statement sintaksisi:

Sintaksis quyidagicha:

Ish holatini tanlang
Ish qiymati_1
Shart = qiymat_1 bo'lganda bajariladigan kod
Ish qiymati_2
Shart = qiymat_2 bo'lganda bajariladigan kod
Ish qiymati_3
Shart = qiymat_3 bo'lganda bajariladigan kod
Boshqa holat
Boshqa barcha holatlar noto'g'ri bo'lganda bajariladigan kod
Tanlovni tugatish

Bu erda "Shart" sinovdan o'tkazilishi kerak bo'lgan o'zgaruvchiga yoki iboraga ishora qiladi va uning asosida kod segmentlaridan biri bajariladi.

"qiymat_1", "qiymat_2" va "qiymat_3" "Shart" ning mumkin bo'lgan natijalaridir. Qachonki ushbu qiymatlardan biri "Shart" ga mos kelsa, uning tegishli Case bloki bajariladi.

"Else" bu birlamchi holat qiymati bo'lib, u faqat yuqoridagi barcha Case iboralari "False"ga olib kelganda bajariladi. "Boshqa" holat ixtiyoriy, lekin odatda undan foydalanish yaxshi amaliyot hisoblanadi.

VBA-da Select-Case misollari:

Endi keling, ba'zi amaliy misollarga o'tamiz.

1-misol: Ifoda bilan Case bayonotini tanlang.

Quyidagi misolda biz “Select Case” bayonotiga shart (ya’ni a=b) berdik. Agar bu rost bo'lsa, "Case True" bloki bajariladi va agar u "False" bo'lsa, "Case False" bloki bajariladi.

Sub Select_Case_Example() "O'zgaruvchilar uchun qiymatni kiriting a = InputBox("A uchun qiymatni kiriting:") b = InputBox("B uchun qiymatni kiriting:") " Ifodani baholash a = b Case True MsgBoxni tanlang. ifoda TRUE" Case False Msgbox "Ifotolar FALSE" End Tanlash Oxiri pastki

Eslatma: Ushbu kodda foydalanuvchidan qiymatlarni olish uchun foydalaniladi.

2-misol: Matn satrlarini tekshirish uchun holat bayonoti

Ushbu misolda biz Case iboralaridagi matn satrlarini solishtiramiz. Agar moslik topilsa, tegishli ish bloki bajariladi, aks holda "Case Else" bloki bajariladi.

Sub Select_Case_Example() "O'zgaruvchilar uchun qiymatni kiriting fruit_name = InputBox("Meva nomini kiriting:") " Ifodani baholash Case fruit_name Case tanlang "Apple" MsgBox "Siz Apple-ga kirdingiz" Case "Mango" MsgBox "Siz Mango kiritdingiz" Case "Apelsin" xabar qutisi "Siz to'q sariq rangga kirdingiz" Yo'qsa Msgbox "Men bu mevani bilmasdim!" Tugatish Tanlash Oxiri pastki

3-misol: Raqamlarni tekshirish uchun holat bayoni

Quyidagi misolda foydalanuvchi kiritgan raqam 5 dan kichik yoki katta ekanligini tekshiramiz.

Sub Select_Case_Example() "O'zgaruvchilar qiymatini kiriting Num = InputBox("1 dan 10 gacha bo'lgan istalgan raqamni kiriting:") " Ifodani baholash Case Num Case Is< 5 MsgBox "Your Number is less than 5" Case Is = 5 MsgBox "Your Number is Equal to 5" Case Is >5 MsgBox "Sizning raqamingiz 5 dan katta" End Select End Sub

Eslatma: foydalanishingiz mumkin IS qiymatlarni solishtirish uchun Case Statement bilan kalit so'z.

4-misol: Bitta ish ichidagi bir nechta shartlarni tekshirish uchun Case bayonotini tanlang.

Ushbu misolda biz foydalanuvchidan 1 dan 10 gacha bo'lgan istalgan raqamni kiritishni so'raymiz. Shundan so'ng, case bayonotida bir nechta shartlardan foydalanib, raqamning juft yoki toq ekanligini tekshiramiz. E'tibor bering, men bitta holatda bir nechta shartlarni solishtirish uchun "," (vergul) ishlatganman.

Sub Select_Case_Example() "O'zgaruvchilar uchun qiymatni kiriting Num = InputBox("1 dan 10 gacha bo'lgan istalgan raqamni kiriting:") " Ifodani baholash Case Num Case 2, 4, 6, 8, 10 MsgBox "Sizning raqamingiz juft" ni tanlang. Case 1, 3, 5, 7, 9 MsgBox "Sizning raqamingiz toq". Case Else MsgBox "Sizning raqamingiz diapazondan tashqarida." End End Sub-ni tanlang

Eslatma: Raqamning juft yoki toq ekanligini tekshirishning osonroq usullari borligini bilaman, lekin men bu misoldan faqat bitta holat bayonotida bir nechta shartlarni qanday tekshirish mumkinligini tushuntirish uchun ishlatganman.

5-misol: Uzluksiz diapazonni shart sifatida tekshirish uchun Case bayonoti.

Bu erda shart sifatida uzluksiz diapazonni sinab ko'ramiz. Biz foydalanuvchidan 1 dan 10 gacha bo'lgan istalgan raqamni kiritishni so'raymiz, agar raqam 1 dan 5 gacha bo'lsa (1 va 5 ni o'z ichiga olgan holda), u holda "1 dan 5 gacha holat" "To'g'ri" bo'ladi, agar foydalanuvchi kiritgan raqam bo'lsa. 6 dan 10 gacha (shu jumladan, 6 va 10) o'rtasida bo'lsa, "6 dan 10 gacha bo'lgan holat" "To'g'ri" bo'ladi, agar oldingi holatlarning ikkalasi ham "Yolg'on" bo'lsa, "Boshqa holat" bajariladi.

Sub Select_Case_Example() "O'zgaruvchilar qiymatini kiriting Num = InputBox("1 dan 10 gacha bo'lgan istalgan raqamni kiriting:") " Ifodani baholash Case raqamini tanlang 1 dan 5 gacha MsgBox "Sizning raqamingiz 1 dan 5 gacha" 6 dan 10 gacha MsgBox "Raqamingiz 6 dan 10 gacha" Case Else MsgBox "Raqamingiz diapazondan tashqarida." End End Sub-ni tanlang

Shunday qilib, bularning barchasi VBA Select Case Statement haqida edi. Ushbu mavzu bo'yicha o'z fikr-mulohazalaringizni baham ko'ring.

Ankit Kaul haqida

Ankit Excel Trick asoschisi. U kun bo'yi kvadrat boshli qiz do'sti (kompyuteri) oldida o'tirishni yaxshi ko'radigan texnologik Geek. :D. Ankitning Microsoft Excelni o'rganishga ishtiyoqi kuchli. Uning yagona maqsadi sizlarni "Excel Geeks"ga aylantirishdir.

DASTURLASH TILI VISUAL BASIC. FILIALLARNI DASTURLASH

Visual Basic-da filiallar quyidagilar yordamida tashkil etiladi:

  • shartli IF bayonoti;
  • o'rnatilgan IIF funktsiyasi;
  • CASE tanlash operatori.

Bitta shartni sinab ko'rish va bayonot yoki bayonotlar blokini bajarish uchun foydalaning shartli gap AGAR...SHUNDAN. Bu operator turli sintaksislar bilan ishlatilishi mumkin: bir qatorli (chiziqli) va ko'p qatorli (blok).

Chiziqli operator quyidagi sintaksisga ega:

Agar<условие>Keyin<операторы!>

Blok operatori quyidagi sintaksisga ega:

Agar<условие>Keyin
<блок операторов 1>
Agar tugaydi

Agar berilgan shart True bo'lsa, operator bloki bajariladi, aks holda operator bloki2 bajariladi. Agar Else bandi belgilanmagan bo'lsa, agarShart bajarilganda boshqaruv darhol If dan keyin keyingi operatorga o'tkaziladi.

If operatori ichkariga joylashtirilishi mumkin, ya'ni operator bloklari ichida joylashgan. Bir nechta shartlarni sinab ko'rish va bir nechta bayonot bloklaridan birini bajarish uchun shaklning kengaytirilgan shartli bayonotidan foydalaning:

Agar<условие 1>Keyin
<блок операторов 1>
Boshqa<условие 2>Keyin
<блок операторов 2>
Boshqa<условие n>Keyin
<блок операторов n>
Agar tugaydi

Ba'zi shartlarni qondirish yoki muvaffaqiyatsizlikka qarab qiymatlardan birini tanlash uchun quyidagi sintaksisga ega bo'lgan IIF shartli funktsiyasidan foydalaning:

IIF(<условие>, <значение1>, <значение2>)

Bu funksiya agar shart rost bo'lsa 1-qiymatni, agar shart noto'g'ri bo'lsa, qiymat2ni qaytaradi.

Siz mantiqiy ifodani True yoki qaytaradigan shart sifatida ishlatishingiz mumkin

False yoki har qanday arifmetik ifoda (nol qiymat False ga, nolga teng bo'lmagan qiymat esa True ga ekvivalentdir).

SELECT CASE bayonoti bitta shartni sinab ko'rish va bir nechta bayonot bloklaridan birini bajarish uchun ishlatiladi.

Operator yozuvi formati:

Case-ni tanlang<проверяемое выражение>
Case<список выражений 1>
<операторы 1>Case<список выражений 2>
<операторы 2>Case<список выражений 3>
<операторы 3>
Boshqa holat
<операторы группы Else>
Tanlovni tugatish

Tekshirilayotgan ifoda Select Case operatorining boshida baholanadi. Bu ifoda har qanday turdagi qiymatni qaytarishi mumkin (mantiqiy, raqamli, satr).

Ifodalar roʻyxati standart chegaralovchi belgi (nuqtali vergul) bilan ajratilgan bir yoki bir nechta ifodadir.

Operatorni bajarayotganda ushbu ro'yxat elementlaridan kamida bittasi tekshirilayotgan ifodaga mos kelishi tekshiriladi.

Ushbu iboralar ro'yxati aliment quyidagi shakllardan birini olishi mumkin:

  • <выражение>- berilgan ifodaning iboralardan biri - ro'yxat elementlari bilan mos kelishini tekshiradi;
  • <выражение 1>Bu<выражение 2>- berilgan ifodaning belgilangan diapazonga tushishini tekshiradi;
  • < Is <логический оператор> < выражение>- berilgan ifoda uchun belgilangan shartning bajarilishini tekshiradi.

Haqiqiy dasturlarda ko'pincha protseduralarda murakkabroq tanlovlarni amalga oshirish, uchta yoki undan ortiq filiallarni tanlash kerak bo'ladi. Bunday holda siz operatorlarni joylashtirishingiz mumkin Agar..Keyin..Boshqa bir-biriga. Bu bayonotni joylashtirish deb ataladi.

Yuqoridagi protsedura bir nechta ichki o'rnatilgan shartli bayonotlardan foydalanadi. Aytish kerakki, bu protsedura faqat Excelda ishlaydi, chunki... Application.InputBox usulidan foydalanadi (qarang: Xost ilovasi funksiyalari). Bu usul funksiya ishlayotgan vaqtda foydalanuvchiga raqamdan boshqa biror narsani kiritishdan saqlaydi.

Agar foydalanuvchi raqam bo'lmagan raqamni kiritsa, u bu haqda xabar oladi.



Agar foydalanuvchi hech narsa kiritmasa, u xato xabarini oladi.




Agar foydalanuvchi "Bekor qilish" tugmasidan foydalansa, u "Kiritilgan ma'lumotlar yo'q" xabarini oladi.


VBA bayonotning qisqacha versiyasini taqdim etadi Agar..Keyin..Boshqa, bu ichki o'rnatilgan bayonotlarning ixchamlashtirilgan ekvivalenti Agar..Keyin..Boshqa, ro'yxatda ishlatiladi. Ushbu qisqa shakl operatordir Agar..Keyin..ElseAgar



Qaysi variantdan foydalanish - bu har bir dasturchi o'zi uchun alohida hal qiladigan savol. Ikkinchi variant ixchamroq, birinchisi esa qulayroq va tushunarli, deb ishoniladi.


Bir nechta mumkin bo'lgan kod yo'llaridan tanlash uchun bayonotlarni joylashtirishingiz mumkin Agar..Keyin..Boshqa ko'p darajalar chuqur, ammo filiallarning rivojlanishini kuzatib borish tobora qiyinlashmoqda.

VBA-da shartli o'tish operatori mavjud bo'lib, siz ko'p sonli turli xil kod filiallarini tanlashingiz kerak bo'lgan hollarda - Case-ni tanlang. Bu Else..If bilan deyarli bir xil ishlaydi, lekin tushunarliroq.

Select Case kalit so'zlari ko'plab Case iboralari bilan ishlatiladi, bunda har bir Case bayonoti boshqa holatning paydo bo'lishini tekshiradi va Case filiallaridan faqat bittasi bajariladi. Case filiali bitta, bir nechta yoki VBA bayonotlarini o'z ichiga olmaydi.


Shartsiz o'tish operatori

Shartsiz o'tish operatorini dastlabki dasturlash tillarining rudimenti deb aytish mumkin, unda u amalda kod bloklarining tsiklik bajarilishini tashkil qilishning yagona vositasi edi.

Shartsiz o'tish operatori har doim protsedura yoki funksiyadagi operatorlarning bajarilish tartibini o'zgartiradi. Bunday holda, hech qanday shartlar tekshirilmaydi.


Sintaksis:

GoTo liniyasi


chiziq- GoTo iborasini o'z ichiga olgan bir xil protsedura yoki funksiyadagi har qanday joriy yorliq yoki satr raqami.

Select Case konstruksiyasi If konstruktsiyasiga muqobildir. . . Keyin. . . Aks holda, ko'rsatmalarning katta to'plamidan iborat blokni bajarishda. Select Case konstruksiyasi If konstruktsiyasiga o'xshash qobiliyatni ta'minlaydi. . . Keyin. . . Aks holda, lekin undan farqli o'laroq, u bir nechta tanlov mavjud bo'lganda kodni yanada o'qilishi mumkin qiladi.

Select Case konstruksiyasi tekshiriladigan bitta ifodada ishlaydi, u konstruksiyaga kirishda bir marta baholanadi. Keyin VBA olingan natijani konstruktsiyaning Case bayonotlarida ko'rsatilgan qiymatlar bilan taqqoslaydi. Agar moslik topilsa, Case bayonoti bilan bog'langan bayonotlar bloki bajariladi:

Tekshiriladigan Case ifodasini tanlang

[operator_blockn]]

Har bir ifoda ro'yxati bir yoki bir nechta qiymatlar ro'yxatidir. Agar bitta ro'yxatda bir nechta qiymat bo'lsa, ular vergul bilan ajratiladi. Har bir bayonot blokida bir nechta bayonot mavjud yoki hech qanday bayonot mavjud. Agar tekshirilayotgan ifodaning hisoblangan qiymati bir nechta Case bayonotlari qiymatlariga mos kelishi aniqlansa, topilgan barcha mosliklarning birinchi Case bayonoti bilan bog'langan bayonotlar bloki bajariladi. VBA Case Else bayonoti bilan bog'langan bayonotlar blokini bajaradi (e'tibor bering, bu ixtiyoriydir), agar tekshirilayotgan ifoda qiymati va Case bayonotlarining barcha ro'yxatidagi qiymatlar o'rtasida moslik topilmasa.

Funktsiyani hisoblash misolini ko'rib chiqaylik

Kichik misol 2()

Const pi2 = 1,57

x = CSng bo'lsin(InputBox("x kiriting", "Kirish", 0))

MsgBox "Manba ma'lumotlari noto'g'ri!"

Qo'ng'iroq qilish ("D1", z)

Esda tutingki, Select Case konstruksiyasi kiritilganda ifodani faqat bir marta baholaydi, If konstruksiyasi esa. . . Keyin. . . Else har bir Elself bayonoti uchun boshqa ifodani baholaydi. If konstruktsiyasi. . . Keyin. . . If va har bir Elself ifodasi bir xil ifodani baholasagina Else ni Select Case konstruksiyasi bilan almashtirish mumkin.

Loop operatorlari. O'rnatilgan halqalar

1.Loop operatorlari

2. O‘rnatilgan halqalar

1. Loop operatorlari.

Looplar bir yoki bir nechta kod qatorlarini bir necha marta bajarishga imkon beradi. VBA quyidagi tsikllarni qo'llab-quvvatlaydi:

Qurilish uchun. . . Keyingisi. Takrorlashlar soni oldindan ma'lum bo'lsa, For tsikli ishlatiladi. . . Keyingisi. For tsikli sikl o'zgaruvchisi yoki sikl hisoblagichi deb ataladigan o'zgaruvchidan foydalanadi, bu tsikl har bir takrorlanganda ma'lum miqdorga oshiriladi yoki kamayadi. Ushbu konstruktsiyaning sintaksisi quyidagicha:

Hisoblagich uchun = start Tugatish uchun

operatorlar

Hisoblagich, boshlash, tugatish va o'sish parametrlari sonli.

Eslatma. O'sish parametri ijobiy yoki salbiy bo'lishi mumkin. Agar u ijobiy bo'lsa, boshlang'ich parametr oxirgi parametrdan kichik yoki teng bo'lishi kerak, aks holda tsikl bajarilmaydi. Agar o'sish manfiy bo'lsa, bajariladigan tsiklning tanasi uchun start oxiriga teng yoki kattaroq bo'lishi kerak. Agar qadam parametri belgilanmagan bo'lsa, o'sish parametrining standart qiymati 1 ga teng.

VBA For tsiklini quyidagi ketma-ketlikda bajaradi:

1. Boshlash uchun sikl o'zgaruvchisi hisoblagichining qiymatini o'rnatadi.

2. Loop o'zgaruvchisi hisoblagichining qiymati va end parametrining qiymatini taqqoslaydi. Hisoblagich kattaroq bo'lsa, VBA tsiklni tugatadi. (Agar o'sish manfiy bo'lsa, tsikl o'zgaruvchisi hisoblagichining qiymati end qiymatidan kichik bo'lsa, VBA tsiklni bajarishni to'xtatadi.)

3. Ko'rsatmalar siklining tanasidagi operatorlarni bajaradi.

4. Loop o'zgaruvchisi hisoblagichining qiymatini 1 ga yoki agar ko'rsatilgan bo'lsa, o'sish parametrining qiymatiga oshiradi.

5. 2-4-bosqichlarni takrorlaydi.

Misolni ko'rib chiqing: f(t) funksiyaning qiymatini hisoblang.

berilgan a, b, n uchun, agar t Dt=(b-a)/(n-1) qadam bilan a dan b ga o zgarmasa.

Kichik misol 3()

Dim f() Yagona

Dim a Single, b As Single, t As Single, dt As Single

Dim i Integer, n As Integer

Read("a1", a) ga qo'ng'iroq qiling: read ("b1", b) ga qo'ng'iroq qiling: read("c1", n) ga qo'ng'iroq qiling

ReDim f(1 dan n - 1 gacha)

dt = (b - a) / (n - 1) : t = a

Qo'ng'iroq qiling("a2", "i"): Qo'ng'iroq qiling ("b2", "t") : Qo'ng'iroq qiling ("c2", "f(t)")

i = 1 uchun n - 1 gacha

Agar t<= -1 Then

ElseIf t > 1 Keyin

Chaqiring("a" & (2 + i), i) : Qo'ng'iroq qiling ("b" & (2 + i), t) : Chaqiring ("c" & (2 + i), f(i))

Har bir konstruksiya uchun. . . Keyingisi

Har bir tsikl uchun. . . Keyingisi For tsikliga o'xshaydi. . . Keyingi, lekin u ob'ektlar to'plamidan yoki massivdan har bir element uchun bayonotlar guruhini takrorlaydi, bu so'zlarni ma'lum bir necha marta takrorlash o'rniga. Bu, ayniqsa, to'plamda nechta element borligi noma'lum bo'lganda foydalidir.

For Every tsikli konstruktsiyasining sintaksisi. . . Keyingisi:

Guruhdagi har bir element uchun

operatorlar

For Every tsiklidan foydalanganda quyidagi cheklovlarni yodda tuting. . . Keyingisi:

To'plamlar uchun element parametri faqat turdagi variantdagi o'zgaruvchi, ob'ekt tipidagi umumiy o'zgaruvchi yoki Ob'ektlar brauzerida keltirilgan ob'ekt bo'lishi mumkin.

Massivlar uchun element parametri faqat Variant o'zgaruvchisi bo'lishi mumkin

For Every tsiklidan foydalana olmaysiz. . . Keyingisi foydalanuvchi tomonidan belgilangan turga ega massiv, chunki turdagi variantdagi o‘zgaruvchi foydalanuvchi tomonidan belgilangan turdagi qiymatni o‘z ichiga olmaydi.

Do...Loop dizayni

Do tsikli bayonotlar blokini cheksiz ko'p marta bajarish uchun ishlatilishi mumkin. Do dizaynining bir nechta o'zgarishlari mavjud. . . Loop, lekin ularning har biri tsikldan qachon chiqish kerakligini aniqlash uchun shart ifodasini baholaydi. If konstruktsiyasida bo'lgani kabi. . . Keyin shart False (nol) yoki True (nol emas) deb baholanadigan qiymat yoki ifoda bo'lishi kerak.

Keyingi qurilishda Do. . . Loop operatorlari shart qiymati True bo'lganda bajariladi:

Shartni bajaring

operatorlar

Ushbu tsiklni bajarishda VBA birinchi navbatda shartni tekshiradi. Agar shart "False" bo'lsa, u barcha sikl ko'rsatmalarini o'tkazib yuboradi. Agar bu rost bo'lsa, VBA sikl ko'rsatmalarini bajaradi, Do While operatoriga qaytadi va shartni yana sinab ko'radi.

Shuning uchun, shart qiymati nolga teng yoki True bo'lmasa, ushbu konstruktsiya bilan ifodalangan sikl istalgan sonda bajarilishi mumkin. E'tibor bering, agar shart birinchi marta tekshirilganda, u noto'g'ri bo'lib chiqsa, tsikl tanasining bayonotlari bir marta ham bajarilmaydi.

Bir misolni ko'rib chiqing: qator yig'indisini hisoblang

berilgan aniqlik bilan.

Kichik misol 4()

Dim e As Single, x As Single, s As Single

Dim m as Single, p As Single, i As Single

Read("a1", x) ga qo'ng'iroq qiling: Read ("b1", e) chaqiring

s = 0: i = 1: m = 1: p = -1

Qo'ng'iroq qiling("a2", "i"): Qo'ng'iroq qiling ("b2", "m") : Qo'ng'iroq qiling ("c2", "s")

Abs(m) >= e

Chaqiring("a" & (2 + i), i) : Chaqiring("b" & (2 + i), Abs(m)) : Chaqiring("c" & (2 + i), s)

Do dizaynining yana bir varianti. . . Loop birinchi navbatda tsikl tanasining ko'rsatmalarini bajaradi va keyin har bir bajarilishdan keyin shartni tekshiradi. Ushbu o'zgarish pastadir tanasi bayonotlarining kamida bir marta bajarilishini ta'minlaydi:

operatorlar

Vaziyatda

Loop konstruktsiyasining qolgan ikkita varianti avvalgilariga o'xshaydi, faqat shart noto'g'ri bo'lganda tsikl bajariladi:

Loop umuman bajarilmaydi yoki ko'p marta bajariladi:

Shartgacha bajaring

Loop operatorlari

Loop kamida bir marta bajariladi:

operatorlar