Dim A4 As
Integer Static
A5 As Integer A1 =
"Мəтіндік жол"
A2 = 2 A3 =
3.14 A4 =
A4 + 4 A5
=A5 + 5
MsgBox A4
MsgBox A5
End Sub
Sub Proc2()
Proc1
MsgBox
A1
MsgBox
A2
MsgBox
A3
MsgBox
A4
MsgBox
A5 Proc1
End Sub
Осы мысалда ауыспалы A1 бҥкіл жоба деңгейінде айқындалған
(«Public» өзекті сөзі пайдаланылды), ал ауыспалы А2 жəне A3 модуль
деңгейінде, ал ауыспалы А4 - Procl рəсімінің деңгейінде ғана,
ауыспалы А5 Procl рəсімінің деңгейінде айқындалғанымен, статикалық
ауыспалы ретінде сипатталған.
Ргос2 рəсімін шақырған кезде, осы рəсімнен A1, А2, A3, А4 жəне
A5 барлық бес ауыспалыға мəндерді тағайындайтын, содан кейін А4
жəне A5 ауыспалылардың ағымдағы мəндерін сҧхбат терезеге
шығаратын
(MsgBox), Procl рəсімі шақырылады.
Осы рəсім аяқталғаннан кейін Р
ГОС
2 рəсімінен барлық бес
ауыспалының ағымдағы мəндері шығарылады. Бҧл ретте келесі жағдай
болады. Ауыспалы A1...A3 өз мəндерін сақтайды, себебі олар модуль
деңгейінде сипатталған, ал ауыспалы А4 жəне A5 мəндері 0 болады
(бос мəндер), себебі осы ауыспалылардың əрекет еті аясы тек Procl
рəсімі болып табылады.
Содан кейін Procl рəсімі қайта шақырылады жəне қайтадан
ауыспалы А4 жəне А5 мəндерін өзгертіп, экранға шығара бастайды.
Бҧл ретте ауыспалы А4 қайтадан 4 мəніне ие болады, себебі осы
ауыспалы ҥшін рəсімді жаңа шақырған кезде жаңадан жад бөлінеді
жəне ол бос мəнмен инициалданады. А4-ке қарағанда статикалық
ауыспалы ретінде сипатталған ауыспалы А5 осы рəсімді бҧдан бҧрын
шақырған кездегі мəнін сақтайды жəне нəтижесінде қайтадан шақыру
кезінде оның мəні 10-ға тең болады.
8.5.
Басқарушы конструкциялар - тармақтар және
циклдер
Бағдарламалаудың барлық тілдеріндегідей, VBA-да бағдарламаны
орындау тəртібін өзгерту мҥмкіндігін беретін, əртҥрлі басқарушы
конструкциялар бар. Егер басқарушы конструкциялар пайдаланылмаса,
онда ең біріншісінен бастап ең соңғысымен аяқтай отырып,
бағдарламалау тілінің операторының ретімен орындалуы іске
асырылады. Кейбір ең қарапайым жағдайларда жеткілікті болғанымен,
кейде кейбір операторлардың орындалуын өткізе отырып немесе
оларды көп рет қайталай отырып, белгілі бір шарттарды орындау
кезінде операторлардың орындалу тəртібін өзгерту керек.
Тəжірибе
көрсеткендей,
ақпаратты
өңдеудің
кез-келген
алгоритмдерін іске асыру ҥшін басарудың екі тҥрлі конструкциясының
болуы жеткілікті: тармақтар жəне циклдер.
Тармақтар. Тармақтардың басқарушы конструкциялары кейбір
жағдайды тексеру мҥмкіндігін береді, содан кейін осы тексеру
нəтижелеріне тəуелді қандай да бір операторды орындау мҥмкіндігін
береді. Тармақтарды ҧйымдастыру ҥшін VBA-да If тармақтар
операторының əртҥрлі нысандары жəне Select Case таңдау операторы
пайдаланылады.
If операторының қарапайым қысқа нысаны бір жағдайды тексеру
ҥшін пайдаланылады, содан кейін тексеру нəтижесіне тəуелді не
орындау ҥшін, не бір немесе бірнеше операторды өткізу ҥшін
пайдаланылады. If тармағының операторының қысқаша нысаны бір
жолы жəне блок нысанына ие болуы мҥмкін. Бір жолған If қысқаша
нысаны төмендегідей жазылуы мҥмкін:
If <шарт>Then <оператор>
Блок нысанында қысқаша тармақ төмендегідей болады:
If<шарт>Then
<оператор1>
<операторN>
EndIf
Шарт ретінде
True(Шындық) немесе
False(Жалған) мəнін
қайтаратын логикалық тіркесті немесе кез-келген арифметикалық
тіркесті
пайдалануға
болады.
Егер
арифметикалық
тіркес
пайдаланылса, онда осы тіркестің нөлдік мəні логикалық
False мәніне,
ал кез-келген нӛлдік емес мәні True мәніне баламалы. Шарт False мәнін
қайтарған жағдайда, оператор немесе қысқаша тармақтар
операторының денесін құрайтын және «Then» жəне «End If» өзекті
сөздерімен жасалған операторлар блогы орындалмайды.
Ескертпе.Қысқаша тармақталу операторын бір жолға жазған
кезде «End If» өзекті сөздері пайдаланылмайды.
If операторының толық нысаны екі тҥрлі операторлар блогы болған
жағдайда пайдаланылады жəне шартты тексеру нəтижелері бойынша
олардың біреуін орындау керек. Осындай If нысаны бір жолға жазыла
алмайды жəне жазбаның блокты нысанына ие:
If<шарт>Then<Опера
торлар Блогы1>
ELSE
<ОператорларБлогы2>
EndIf
Егер шарт шындық болса, онда «Then» жəне «Else» өзекті
сөздерінің арасына алынған бірінші операторлар блогы орындалады;
əйтпесе - «Else» жəне «EndIf» сөздерінің арасына алынған екінші блок
орындалады.
Кейде бірнеше əртҥрлі шартты тексеру негізінде баламалы
əрекеттердің біртҧтас тобынан бір əрекетті таңдауға тура келеді. Ол
ҥшін If...Then...Else If тармақталу операторларының тізбегін
пайдалануға болады:
If <шарт1>Then
<ОператорларБлогы1>
Else If <шарт2>Then
<ОператорларБлогы2>
Else If <шарт3>Then
<ОператорларБлогы3>
Else If <шартN> Then
<ОператорларБлогыN>
Else
<ОператорларБлогы_Else>
End If
If...Then...Else If операторларының осындай тізбектерінің иілімдігі
жоғары жəне көптеген мəселелерді шешу мҥмкіндігін береді, алайда
егер бірнеше мҥмкіндіктің біреуін таңдау əрқашан бір тіркестің əртҥрлі
мəніне негізделген болса, ол ҥшін арнайы Select Case таңдау
операторын
пайдалану қолайлы, оның синтаксисі төмендегідей:
Select Case <тексерілетінТіркес>
Case <мəндерТізімі1>
<операторларБлогы 1>
Case <мəндерТізімі2>
<операторларБлогы2>