Case
<мəндерТізімі3><оператор
ларБлогы3>
Case Else
<операторларБлогы_Еке>
End Select
Тексерілетін тіркес Select Case операторының жҧмысы басталған
кезде есептеледі. Осы тіркес кез-келген типті мəнді қайтара алады.
Тіркестер тізімі ҥтірмен бөлінген, бір немесе бірнешетіркес болып
табылады. Операторды орындау кезінде осы тізімнің ең болмағанда бір
элементі тексерілетін тіркеске сəйкес келуі тексеріледі. Тіркестер
тізімінің осы элементтерінің мынадай нысаны болуы мҥмкін:
<тіркес>
(бҧл жағдайда тексерілетін тіркес мəнінің белгіленген тіркеске сəйкес
келуі тексеріледі);
<тіркес1> То <тіркес2>
(бҧл жағдайда тексерілетін тіркес мəнінің көрсетілген мəндер
диапазонында орналасуы тексеріледі);
If <логикалықОператор><тіркес>
(бҧл жағдайда тексерілетін тіркес логикалық оператор көмегімен
көрсетілген мəнмен салыстырылады; мысалы, егер тексерілетін мəн 20-
дан кем болса, If >= 20 шарты орындалған болып есептеледі).
Егер тізімдегі элементтің ең болмағанда біреуі тексерілетін тіркеске
сəйкес келсе, онда тиісті операторлар тобы орындалады жəне осымен
Select Case операторының орындалуы аяқталады, ал қалған тіркес
тізімдері тексерілмейді. Егер барлық осы тізімнің бірде бір элементі
тексерілетін тіркестің мəніне сəйкес келмесе, онда болған жағдайда
Else тобының операторы орындалады.
Циклдер. VBA-да екі топқа бөлуге болатын, циклдерді
ҧйымдастыру қҧралдарының жеткілікті жинағы бар:
• Do...Loop шартымен циклдер;
• For.Next атаумен циклдер.
Dо...Loop типті циклдер цикл денесін қҧрайтын, операторлар
блогының орындалуы қанша рет қайталануы қажет белгісіз болған
жағдайда пайдаланылады. Мҧндай цикл белгілі бір шарт орындалғанға
дейін өз жҧмысын жалғастырады. Dо...Loop циклдерінің төрт тҥрі бар,
олар тексерілетін шарт тҥрімен жəне осы тексерудің орындалу
уақытымен ерекшеленеді. Осы төрт цикл конструкциясының
синтаксисі 8.2-кестеде келтірілген.
Кесте 8.2. Цикл конструкциясының синтаксисі
Конструкция
Сипаттамасы
DoWhile<шарт><опе
раторларБлогы>Loop
Осы конструкцияда циклді орындау
шартының мəні операторлар орындалғанға
дейін тексеріледі
Do<операторларБлог
ы>LoopWhile<шарт>
Осы конструкцияда циклді орындау
шартының мəні операторлар
орындалғаннан кейін тексеріледі
DoUntil<шарт><опер
аторларБлогы>Loop
Осы конструкцияда оператор орындалғанға
дейін белгіленетін, циклдің жҧмысын
аяқтау шартының мəні көрсетіледі
Do
<операторларБлогы>
LoopUntil<шарт>
Осы конструкцияда оператор
орындалғаннан кейін белгіленетін, циклдің
жҧмысын аяқтау шартының мəні
көрсетіледі
Сондай-ақ For...Next атап шығуымен цикл операторының екі тҥрі
бар. Массивті өңдеу кезінде, сонымен қатар кейбір операторлар
тобының орындалуын белгіленген сан рет қайталау қажет болғанда,
есептеуішпен For...Next циклі пайдаланылады. Dо...Loop циклдеріне
қарағанда циклдің осы тҥрі есептеуіш деп аталатын арнайы
ауыспалыны пайдаланады, оның мəні цикл денесін белгіленген шамаға
орындаған сайын артады немесе азаяды. Осы ауыспалының мəні
белгіленген мəнге жеткенде, циклдің орындалуы аяқталады. Осы
циклдің синтаксисі (тік жақшаға міндетті емес элементтер алынған):
For <есептеуіш> = <бастапқыМəні>To <соңғыМəні>[Step <өсіру>]
<операторларБлогы>
Next <есептеуіш>
Келтірілгенге бірнеше ескерту келтірейік: цикл конструкциясының
фрагментіне:
• <өсіру> оң жəне теріс сан болуы мҥмкін. Егер теріс өсіруді
пайдалансақ, онда цикл денесі ең болмағанда бір рет орындалу ҥшін
соңғы мəн бастапқы мəнге тең немесе кем болу керек;
• For.Next цикл жҧмысы аяқталғаннан кейін есептеуіш ретінде
пайдаланылған ауыспалы, егер өсіру оң болса, соңғы мəннен жоғары
мəнге ие болады, ал егер өсіру теріс болса, соңғы мəннен кем мəнге ие
болады;
• егер бастапқы жəне соңғы мəн сəйкес келсе, онда цикл денесі тек
бір рет орындалады.
For...Next циклінің тағы бір тҥрін қарастырайық, ол объекттерді
өңдеу кезінде VBA-да жиі пайдаланылады, біртекті объекттердің
массивін немесе тегін қҧрайды.
For Each.Next циклінің осы тҥрінде есептегіш жоқ, ал цикл денесі
əрбір объекттің массиві немесе тегі ҥшін орындалады. Осындай
циклдің синтаксисі:
For Each <элемент>In <жиынтық>
<операторларБлогы>
Next [<элемент>]
мҧндағы<элемент> — объекттер тегінің элементтеріне сілтеу ҥшін
пайдаланылатын ауыспалы; <жиынтық> — бҧл массивтің немесе
тегінің аты.
Ҧқсас циклдің пайдаланылу мысалын келтірейік. Келесі рəсім
ағымдағы ашық дерекқордың барлық кестелерінің барлық өрістерінің
тізімін басып шығаруға арналған:
Public Sub EnumerateAllFields ()
Dim MyBase As Database
Dim tdf As TableDef, fid As Field
Set MyBase = DBEngine.Workspaces(0).Databases(0)
For Each tdf In MyBase.TableDefs
Debug.Print "Кесте "& tdf.Name For
Each fid In tdf. Fields Debug. Print
"Поле: "& fid. Name Next fid NEXT
TDF Set MyBase = Nothing End Sub
Осы мысалда Dim операторлары келесі ауыспалыларды жариялады:
• MyBase — «Дерекқор» объектісі;
• tdf — дерекқор кестесі;
• fid — кесте аясы.
Set операторы MyBasе ауыспалыға ағымдағы ашық дерекқор
атының мəнін тағайындайды. Одан əрі кестенің əрбір анықтамасы ҥшін
кестенің аты басып шығарылады, содан кейін осындай типті цикл
барлық аяның атын басып шығарады.
8.6.
Циклдер мен рәсімдерден шығу
Әдетте рəсімнің орындалуы соңғы оператордан кейін аяқталады, ал
циклдің орындалуы - жҧмысын аяқтау шартына қол жеткізгеннен кейін
аяқталады.
Достарыңызбен бөлісу: |