Excel макростарындағы айнымалылар мен тұрақтыларды түсіну

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

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

Бірдей үлкен мәнді бірнеше рет пайдалану қажет болса, тұрақтылар пайдалы болуы мүмкін. Санды көшірудің орнына тұрақтының атын жазуға болады. Мысалы, тұрақты мән болып табылатын Pi сақтау үшін «Pi» тұрақтысын пайдалануға болады. Ол өте үлкен, әр жолы оны жазу немесе іздеу және көшіру өте қиын. Сонымен, екі таңбаны жазу жеткілікті, ал орта автоматты түрде қажетті нөмірді пайдаланады.

Excel пайдаланушысы оларда сақталған мәнді мезгіл-мезгіл өзгерту қажет болса, айнымалы мәндерді жариялауы керек. Мысалы, өнім үшін ағымдағы ҚҚС мөлшерлемесін сақтайтын sVAT_Rate деп аталатын айнымалы мәнді орнатуға болады. Егер ол өзгерсе, оны тез түзетуге болады. Бұл әсіресе Америка Құрама Штаттарында бизнеспен айналысатындар үшін пайдалы, мұнда кейбір тауарларға ҚҚС мүлдем салынбауы мүмкін (және бұл салық штаттан штатқа қарай ерекшеленеді).

Мәліметтер түрлері

Әрбір деректер контейнері бірнеше түрдің бірі болуы мүмкін. Мұнда өңделген ақпараттың стандартты түрлерін сипаттайтын кесте берілген. Олардың көпшілігі бар және бастапқыда олар бір-бірін қайталайтындай көрінуі мүмкін. Бірақ бұл иллюзорлық сезім. Дұрыс деректер түрін көрсету неге соншалықты маңызды екенін білу үшін оқыңыз.

Шағын сандар үшін жадта көбірек орын алатын деректер түрін пайдалану ұсынылмайды. Мысалы, 1 саны үшін байт түрін пайдалану жеткілікті. Бұл орындалатын модульдің, әсіресе әлсіз компьютерлердің жұмысына оң әсер етеді. Бірақ бұл жерде тым алысқа бармау маңызды. Тым ықшам деректер түрін пайдалансаңыз, шамадан тыс мән оған сәйкес келмеуі мүмкін.

Тұрақтылар мен айнымалыларды жариялау

Деректер контейнерін алдымен жарияламай пайдалану қатаң түрде ұсынылмайды. Содан кейін бірқатар мәселелер туындауы мүмкін, оларды болдырмау үшін айнымалыларды немесе тұрақтыларды санау арқылы кодтың бірнеше шағын жолын жазу қажет.

Айнымалыны жариялау үшін Dim операторы қолданылады. Мысалы, келесідей:

Күңгірт айнымалы_атауы бүтін сан ретінде

Variable_Name — айнымалының аты. Әрі қарай деректер түрін көрсететін As операторы жазылады. «Айнымалы_атауы» және «Бүтін» жолдарының орнына өз атыңызды және деректер түрін енгізуге болады.

Тұрақтыларды да жариялауға болады, бірақ алдымен олардың мәнін көрсету керек. Опциялардың бірі:

Const iMaxCount = 5000

Әділдік үшін, кейбір жағдайларда сіз айнымалыны жарияламай-ақ жасай аласыз, бірақ бұл жағдайда оларға автоматты түрде Variant түрі тағайындалады. Дегенмен, бұл келесі себептерге байланысты ұсынылмайды:

  1. Вариант әлдеқайда баяу өңделеді және мұндай айнымалылар көп болса, әлсіз компьютерлерде ақпаратты өңдеу айтарлықтай баяулауы мүмкін. Сол секундтар шешетін сияқты ма? Бірақ егер сізге кодтың көп жолын жазу керек болса, содан кейін оны әлсіз компьютерлерде де іске қосу керек болса (олар әлі де сатылады, қазіргі заманғы кеңсе жинақтары көп жедел жадты қажет етеді), сіз жұмысты толығымен тоқтатуға болады. Макростарды ойластырылмаған жазу оперативті жады аз және күрделі тапсырмаларды орындауға арналмаған смарт-кітаптардың қатып қалуына әкелетін жағдайлар бар. 
  2. Атаулардағы қате басып шығаруға рұқсат етіледі, егер табылса, жарияланбаған айнымалыны табуға мүмкіндік беретін Option Explicit мәлімдемесін пайдалану арқылы алдын алуға болады. Бұл қателерді анықтаудың оңай жолы, себебі ең аз қате аудармашы айнымалыны анықтай алмайды. Ал айнымалыларды жариялау режимін қоссаңыз, модульдің ең басында жарияланбаған деректер контейнерлері табылса, интерпретатор жай ғана макросты іске қосуға рұқсат бермейді.
  3. Деректер түріне сәйкес келмейтін айнымалы мәндерден туындаған қателерді болдырмаңыз. Әдетте, бүтін айнымалыға мәтіндік мән тағайындау қате жібереді. Иә, бір жағынан, жалпы тип декларациясыз тағайындалады, бірақ олар алдын ала жарияланған болса, онда кездейсоқ қателерді болдырмауға болады.

Сондықтан, бәріне қарамастан, Excel макростарындағы барлық айнымалы мәндерді жариялау ұсынылады.

Айнымалыларды жариялағанда тағы бір нәрсені есте ұстаған жөн. Айнымалыны жариялау кезінде оған ешқандай мән бермеуге болады, бірақ бұл жағдайда ол әдепкі мәнге ие болады. Мысалға:

  1. Жолдар бос орындалады.
  2. Сандар 0 мәнін қабылдайды.
  3. Логикалық түрдегі айнымалылар бастапқыда жалған болып саналады.
  4. Әдепкі күн - 30 жылдың 1899 желтоқсаны.

Мысалы, егер бұрын ешқандай мән көрсетілмесе, бүтін айнымалыға 0 мәнін тағайындаудың қажеті жоқ. Онда бұл нөмір бұрыннан бар.

Опцияның айқын мәлімдемесі

Бұл мәлімдеме VBA кодында қолданылатын барлық айнымалы мәндерді жариялауға және кодты іске қоспас бұрын хабарланбаған контейнерлердің болуын анықтауға мүмкіндік береді. Бұл мүмкіндікті пайдалану үшін макрокодтың ең жоғарғы жағына Option Explicit кодының жолын жазыңыз.

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

  1. Жол бойындағы әзірлеу ортасына өтіңіз – Құралдар > Параметрлер.
  2. Осыдан кейін ашылатын терезеде Редактор қойындысын ашыңыз.
  3. Соңында, Айнымалы декларацияны талап ету элементінің жанындағы құсбелгіні қойыңыз.

Осы қадамдарды орындағаннан кейін «OK» түймесін басыңыз. 

Міне, енді әрбір жаңа макросты жазғанда бұл жол автоматты түрде кодтың жоғарғы жағына енгізіледі.

Тұрақтылар мен айнымалылардың қолданылу аясы

Әрбір айнымалының немесе тұрақтының шектеулі ауқымы ғана болады. Бұл сіз оны қайда жариялағаныңызға байланысты.

Бізде функция бар делік Жалпы баға(), және ол айнымалыны пайдаланады sVAT_Rate. Модульдегі орынға байланысты оның басқа ауқымы болады:

Опция Ашық

sVAT_Rate жалғыз ретінде күңгірт

Total_Cost() функциясы қосарланған

.

.

.

End Function

Егер айнымалы модульдің жоғарғы жағында жарияланса, ол сол модуль бойына таралады. Яғни, оны әрбір процедура арқылы оқуға болады.

Сонымен қатар, егер процедуралардың бірі айнымалының мәнін өзгертсе, келесісі де осы түзетілген мәнді оқиды. Бірақ басқа модульдерде бұл айнымалы мән әлі оқылмайды.

Опция Ашық

Total_Cost() функциясы қосарланған

sVAT_Rate жалғыз ретінде күңгірт

   .

   .

   .

End Function

Бұл жағдайда айнымалы процедура ішінде жарияланады, ал егер ол басқа процедурада пайдаланылса, интерпретатор қате жібереді.

Егер айнымалы мәнді басқа модульдер оқуын қаласаңыз, Dim кілт сөзінің орнына Public кілт сөзін пайдалануыңыз керек. Сол сияқты, Dim сөзінің орнына жазылған Public операторын пайдалану арқылы айнымалының ауқымын тек ағымдағы модульмен шектей аласыз.

Тұрақтылар ауқымын дәл осылай орнатуға болады, бірақ мұндағы түйінді сөз Const операторымен бірге жазылады.

Мұнда тұрақтылар мен айнымалылармен қалай жұмыс істейтінінің жақсы мысалы бар кесте берілген.

Опция Ашық

Жалпыға ортақ sVAT_Rate жеке ретінде

Қоғамдық Const iMax_Count = 5000

Бұл мысалда айнымалыны жариялау үшін Public кілт сөзінің қалай қолданылатынын және жалпы тұрақты мәнді жариялау үшін Visual Basic өңдегішінде не жазу керектігін көруге болады. Бұл мән контейнерлерінің ауқымы барлық модульдерге қолданылады.
Опция Ашық

Жеке sVAT_Rate ретінде жалғыз

Жеке Const iMax_Count = 5000

Мұнда айнымалылар мен тұрақтылар Private кілт сөзі арқылы жарияланады. Бұл оларды тек ағымдағы модуль ішінде көруге болатынын білдіреді, ал басқа модульдердегі процедуралар оларды пайдалана алмайды.

Тұрақтылар мен айнымалылар не үшін қажет

Тұрақтылар мен айнымалыларды пайдалану кодтың түсініктілігін арттыруға мүмкіндік береді. Ал егер жаңадан бастағандарда айнымалылардың не үшін қажет екендігі туралы сұрақтары болмаса, онда тұрақты мәндердің қажеттілігіне қатысты көптеген түсініксіз жағдайлар бар. Және бұл сұрақ, бір қарағанда, әбден қисынды болып көрінеді. Өйткені, айнымалыны бір рет жариялауға болады және оны енді ешқашан өзгертпеуге болады.

Жауап жадта үлкен орын алатын деректер түрлерін пайдаланумен бірдей жазықтықта болады. Егер біз айнымалылардың үлкен санымен айналысатын болсақ, біз кездейсоқ бар контейнерді өзгерте аламыз. Егер пайдаланушы белгілі бір мәннің ешқашан өзгермейтінін белгілесе, орта оны автоматты түрде басқарады.

Бұл макросты бірнеше бағдарламашылар жазғанда өте маңызды. Кейбір айнымалылар өзгермеуі керек екенін білуі мүмкін. Ал екіншісі жоқ. Const операторын көрсетсеңіз, басқа әзірлеуші ​​бұл мәннің өзгермейтінін біледі.

Немесе, бір аты бар тұрақты болса және айнымалының басқа, бірақ ұқсас атауы болса. Әзірлеуші ​​оларды жай ғана шатастыруы мүмкін. Мысалы, өзгертуді қажет етпейтін бір айнымалы Айнымалы11 деп аталады, ал өңдеуге болатын екіншісі Айнымалы1 деп аталады. Адам кодты жазу кезінде автоматты түрде қосымша бірлікті кездейсоқ өткізіп жіберіп, оны байқамай қалуы мүмкін. Нәтижесінде мәндерге арналған контейнер өзгертіледі, оған қол тигізбеу керек.

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

Иә, сіз бұл жағдайда түсініктемелер жасай аласыз, бірақ Const сөзін көрсету оңай емес пе?

Қорытындылар

Айнымалылар - есептеулерден бастап белгілі бір оқиғалар туралы пайдаланушыны хабардар етуге немесе электрондық кестенің ұяшықтарында нақты мәндерді көрсетуге дейін күрделі операцияларды орындауға мүмкіндік беретін макробағдарламалаудың маңызды құрамдас бөлігі.

Егер әзірлеуші ​​бұл контейнерлердің мазмұны болашақта өзгермейтінін нақты білсе, тұрақты мәндерді пайдалану керек. Оның орнына айнымалыларды қолданбау ұсынылады, себебі кездейсоқ қателесу мүмкін.

пікір қалдыру