4- VBA, VBA-да программалау, Excel, программирование, математика, программалау

Программалаушылар фолклорынан...

"Не существует фактов, есть лишь их интерпретация."

Қазақшалағанда:
"Фактілер болмайды, тек олардың байымдаулары орын алады."

(Ф. Ницше) .

Майқы би сөздерінен.

Қазақ тіліне Макрос.

VBA-ның басқарушы структуралары

Программаның орындалу үрдісін басқару үшін VBA тілінде көп деген түрлі структкралары бар. Олар арқылы шарт бойынша программаның ағу барысын айырлауға (тармақтауға), бірнеше баламадан таңдау жасауды, түрлі қайталануды (циклды) және де ішкі программаларды шақырып қайта кері оралуды ұйымдастыруға болады. Тілдің негізгі конструкцияялары болып табылатын процедуралары мен функцияларын басқарушы структуралары қатарына жатқызуға болады. Бүл қатарға, кең қолдануға ұсынбасақта, әйгілі белгі арқылы өту амалын да қосуға орынды.

Белгі арқылы өту
Бұл оператордың бірнеше түрі бар.
  • GoTo белгі; 'белгі' деген барар жердегі белгінің атауы. Басқару (орындалу кезегі) шартсыз (міндетті) түрде белгісі бар операторға ауысады.
  • GoSub ... Return. Синтасисі
    GoSub
    белгі1
    ...
    белгі1
    ...
    Return
  • Оператордың бұл түрі белгі мен Return операторының арасындағы кодты ішкі программа подпрограмма ретінде қолдануға мүмкіндік береді. Return операторы кездескен соң басқару GoSub операторынаң кейнгі оператор алады.
  • On өрнек GoTo белгі1 , белгі2...

  • Өрнек 255-тен аспайтын сан мәнін туындау керек. Басқару мәнге сәйкес белгіге ауысады.
  • On өрнек GoSub белгі, белгі ...

  • Бұл оператор басқаруды өрнектің мәніне сәйкес подпрограммаға ауыстырады.      Шындыққа келгенде белгіге өту операторлары программаның схемасын шырмайлап, түсініксіз қылады. Оларды қолдануды шектеген немесе мүлде қолданбаған жөн.

    Шарт бойнша тармақтау
  • If Шарт..Then
    Операторлар тобы
    [Else
    Операторлар тобы]
    Enf If

  • Бұл оператор есептеу процесін екі жолдың біреуіне түсіреді. Шарт ретінде өрнек қолданылады. Ол өрнектің мәні логикалық болуы керек. Операторлар тобына кез-келген операторлар кіре алады. Тік жақша ішіндегі конструкциялар жоқ болуы да мүмкін. Ағылшын әріптерімен көрсетілген жазулардың конструкцияда болуы - міндет.
  • If Шарт Then
    Операторлар тобы
    [ElseIf Шарт Then
    Операторлар тобы]
    [Else
    Операторлар тобы]
    End If

  • Мына оператор `ElseIf шарт` арқылы бірнеше жолдың ішінен керек тармақты тауп оған есеп процесін жолдайды.
  • Select Case Талданатын өрнек
    Case Мәндер тізімі
    Операторлар тобы
    Case Мәндер тізімі
    Операторлар тобы
    [Case Else
    Операторлар тобы]
    End Select

  • Осы оператор тармақтауды, яғни үрдістің бағытын өзгертеді, өрнектің мәніне қарап. Өрнектің мәні қай тізімге кіреді, соған сәйкес операторлар орындалып кетеді. Оларды орындап болғасын, End Select-тен кейінгі оператор басқаруды өзіне алады. Егер еш тізімге табылған мән кірмесе, қате пайда болады.Сол себептен Case Else операторын қосқан өте орынды. Тізімді көрсетерде салыстыру таңбаларын ұрықсат бар (>,<,<>,<=,>=).

    Циклдер
  • While Шарт
    Операторлар тобы
    Wend
    Шарт өрнегі логикалық мәнді туындауы кажет.Операторлар тобы мән шындықты белгілегенше орындалады. Егер циклға енерде өрнек мәні жалған болса операторлар тобы мүлде орындалмайды. Операторды сирек қолдану керек.
  • Do While/Until Шарт
    Операторлар тобы
    Loop
  • Do
    Операторлар тобы
    Loop While/Until Шарт
    Алдынғы екі операторда ортадағы операторлар тобы орындалады While жағдайында шарт шын болып тұрса, ал Until жағдайында - шын болғанша. Шарт тексеруді оператордың басына немесе соңына орналастыруға болады.
  • For Цикл санағышы =бастапқы мән To сонғы мән [ қадам мәні]
    Операторлар тобы
    Next
    Кең қолданылатын цикл операторының түрі. Оперторлар тобы цикл айнымалысы (санағышы) бастапқы мәннен соңғыға жеткенше оралып орындалады. Айнымалы мәні қадамға өзгеріп отырады. Егер бұл шама түсіп қалса қадам бір деп саналады.
  • For Each объектАатауы In коллекцияАты
    Операторлар тобы
    Next
    Оператор белгілі коллекцияға кіретін барлық объекттерді қарап, олармен түрлі амалдарды орындауға арналған. Көпшіліктің (коллекцияАты) мүшесінің методтары мен қасиеттеріне объектАтауы арқылы жетуге иболады.
  • Процедуралар (Макростар)
    Синтаксисі:
    [Private/Public][Static]
    Sub (
    [Параметрлердің тізімі])
    Операторлар тобы
    End Sub
    Егер Public мінездемесі болса бұл процедураға жоба ортасының қай жерінен болсада жетуге болады. Private болса, жету орынды тек модул ортасында. Static -процедураның айнымалылары тұрақты дегенді білдіреді(шақырылған сайын мәндерін өшірмейді).
    Параметрлерді тапсыру синтаксисі:
    [Optional][ByVal/ByRef] Айнымалы атауы As Типы[= Мәні ]
    Айнымалының типын көрсету өте маңызды іс. Міндетті түрде көрсетілмейтін параметрдің алғашқы мәнін көрсету керек. Егер ол айнымалы тізімнен түсіп қалса, интерпретатор өзі алғашғы мәнді айнымалыға меншіктей қояды. Параметрдің міндетті емес екенін Optional кілттік сөзі танытады. Ал, ByRef, ByVal кілттік сөздері параметрдің не мәні, не сілтемесі арқылы тапсырылатынын көрсетеді. Бұл екі айырмашылықты мұқият түсініп алу қажет, айтпесе күтпеген нәтижелерге тап болуыңыз мүмкін. Процедураны шақырғанда атын жазу керек, сол жағынан дөңгелек жақша ішінде, бар болса, параметрлердің тізімін орналастыру қажет. Кей кезде процедураның атауының алдына Call сөзін қоса аласыз. Үндемеу принципы бойнша параметр сілтемесі арқылы тапсырылады.

    Функциялар
    Синтаксисі:
    [Private/Public][Static]
    Function(
    [Параметрлердің тізімі])
    Операторлар тобы
    Функция атауы = Мән
    End Function
    Егер Public мінездемесі болса бұл функцияға жоба ортасының қай жерінен болсада жетуге болады. Private болса, жету орынды тек модул ортасында. Static -процедураның айнымалылары тұрақты дегенді білдіреді(шақырылған сайын мәндерін өшірмейді).
    Параметрлерді тапсыру синтаксисі:
    [Optional][ByVal/ByRef] Айнымалы атауы As Типы[= Мәні ]
    Айнымалының типын көрсету өте маңызды іс. Міндетті түрде көрсетілмейтін параметрдің алғашқы мәнін көрсету керек. Егер ол айнымалы тізімнен түсіп қалса, интерпретатор өзі алғашғы мәнді айнымалыға меншіктей қояды. Параметрдің міндетті емес екенін Optional кілттік сөзі танытады. Ал, ByRef, ByVal кілттік сөздері параметрдің не мәні, не сілтемесі арқылы тапсырылатынын көрсетеді. Бұл екі айырмашылықты мұқият түсініп алу қажет, айтпесе күтпеген нәтижелерге тап болуыңыз мүмкін. Функцияны шақырғанда оның атын өрнек арасында жазу керек, сол жағынан дөңгелек жақша ішінде, бар болса, параметрлердің тізімін көрсетіп. Функция мән туындап сол өрнектің есебіне қайырып қосады. Процелура мән қайырмайды, ал функция болса, міндетті түрде шақырған жерге мән қайырады.

    Таңдау конструкциялары
    Кей жағдайларда айнымалыға мәнді белгілі шарттың орындалуы бойынша меншіктеу керек болады. Ондайда VBA келесі операторларды қолдануға ұсынады:
    • Switch(Шарт1, Мән1, Шарт2, Мән2,...)
      Dim Baga
      Dim Akil
      Baga = 5
      Akil=Switch( Baga<4,"Тапсырмапсын ғой!", Baga>=4,"Жарайсын батыр!")
      MsgBox Akil
      Akil мәні меншіктеледі Baga мәніне қарай.
    • IIF(Өрнек, Шындықтағы, Жалғандағы)
      Dim Baga
      Baga=4
      MsgBox Iif(Baga,"Тапсырмапсын ғой!","Жарайсын батыр!") Бұл жағдайда экран бетіне екінші хабарлама шығады.
    • Choose(Индекс, Мән1, Мән2, Мән3,...)
      Dim Baga
      Dim Soz As String
      Baga=4
      Soz=Choose(Baga,"Қанағатсыз","Қанағатсыз","Қанағат","Жақсы","Үздік") Soz айнымалысының мәні болады "Жақсы" жолы.

    Циклдан мерзімсіз шығу
    Кейде есептеу үрдісін тоқтату немесе үзу керек болады. Кейде араласып та кету керек. Сол үшін келесі операторлар бар:
  • DoEvents- тосып қалған процестерді эорлап орындату. Кейде ұзын процестер ресурстарды ұстап басқаларға жұмыс істетпейды, сонда осы оператор көмектеседі.
  • End- есептеу тоқтайды. Айнымалыла өшеді, файлдар жабылады. Есеп процесін басынан бастау керек.
  • Stop-есепті кідіртеді. Айнымалылар мен файлдарда еш өзгеріс тумайды. Тоқтаған жерден процесті жалғастыру болады.
  • Сыртқы сілтемелер
    Сыртқы сілтемелер тілген кірмейтін басқа библиотекалардың функциялары жету үшін қолданылады. Мысалы, API функцияларына.

    VBA-ның редакторы мен жобалары туралы

    Индукция имеет результатом приспособление нашего ума к фактам...
    Приспособление ума может в большей степени совпадать с приспособлением языка...
    Прогресс науки отмечается прогрессом терминологии.

    Д.Пойя




    Интернеті жоқ ауылдардың мұғалімдеріне мына тестер қолайлы келеді
    Майқы би
    Естіге айтқан тура сөз,
    Шыңға тіккен тумен тең.
    Есерге айтқан тура сөз,
    Құмға сіңген сумен тең.