Excel Macros හි විචල්‍යයන් සහ නියතයන් අවබෝධ කර ගැනීම

මෙම ලිපියෙන්, ඔබ macros වල නියතයන් සහ විචල්‍යයන් මොනවාද, ඒවා භාවිතා කළ හැකි ස්ථාන මොනවාද සහ විවිධ දත්ත වර්ග අතර ඇති ප්‍රධාන වෙනස කුමක්දැයි ඔබ ඉගෙන ගනු ඇත. ඔබට විචල්‍යයක් ලිවිය හැකි අතර එය කිසි විටෙකත් වෙනස් නොකරන්නේ නම් නියතයන් අවශ්‍ය වන්නේ මන්දැයි ද හෙළි වනු ඇත.

අනෙකුත් ක්‍රමලේඛන භාෂා මෙන්, දත්ත විචල්‍ය හෝ නියත වශයෙන් ගබඩා කළ හැක (මේ දෙකම බොහෝ විට දත්ත බහාලුම් ලෙසද හැඳින්වේ). මෙම සංකල්ප අතර ප්රධාන වෙනස මෙයයි. වැඩසටහනේ සිදුවන දේ අනුව කලින් වෙනස් විය හැක. අනෙක් අතට, නියතයන් එක් වරක් සකසා ඇති අතර ඒවායේ අගය වෙනස් නොකරයි.

ඔබට එකම විශාල අගය කිහිප වතාවක් භාවිතා කිරීමට අවශ්‍ය නම් නියතයන් ප්‍රයෝජනවත් විය හැක. අංකය පිටපත් කරනවා වෙනුවට, ඔබට නියතයේ නම ලිවිය හැකිය. උදාහරණයක් ලෙස, නියත අගයක් වන Pi ගබඩා කිරීම සඳහා ඔබට නියත "Pi" භාවිතා කළ හැකිය. එය ඉතා විශාල වන අතර, සෑම අවස්ථාවකදීම එය ලිවීමට හෝ සෙවීමට සහ පිටපත් කිරීමට අපහසු වේ. එබැවින්, අක්ෂර දෙකක් ලිවීමට ප්රමාණවත් වන අතර, පරිසරය ස්වයංක්රීයව අවශ්ය අංකය භාවිතා කරයි.

Excel පරිශීලකයා විසින් ඒවායේ ගබඩා කර ඇති අගය කලින් කලට වෙනස් කිරීමට අවශ්‍ය නම් විචල්‍ය ප්‍රකාශ කිරීමට අවශ්‍ය වේ. උදාහරණයක් ලෙස, ඔබට sVAT_Rate ලෙස හැඳින්වෙන විචල්‍යයක් සැකසිය හැක, එමඟින් නිෂ්පාදනය සඳහා දැනට පවතින වැට් බදු අනුපාතය ගබඩා වේ. එය වෙනස් වුවහොත්, ඔබට එය ඉක්මනින් නිවැරදි කළ හැකිය. සමහර භාණ්ඩ කිසිසේත් වැට් බද්දට යටත් නොවිය හැකි එක්සත් ජනපදයේ ව්‍යාපාර කරන අයට මෙය විශේෂයෙන් ප්‍රයෝජනවත් වේ (මෙම බද්දද ප්‍රාන්තයෙන් ප්‍රාන්තයට වෙනස් වේ).

දත්ත වර්ග

සෑම දත්ත බහාලුමක්ම වර්ග කිහිපයකින් එකක් විය හැක. සැකසූ තොරතුරුවල සම්මත වර්ග විස්තර කරන වගුවක් මෙන්න. ඒවායින් බොහොමයක් ඇති අතර, ඔවුන් එකිනෙකා පුනරාවර්තනය කරන බව ආරම්භකයකුට පෙනෙන්නට පුළුවන. නමුත් මෙය මායාකාරී හැඟීමකි. නිවැරදි දත්ත වර්ගය සඳහන් කිරීම එතරම් වැදගත් වන්නේ මන්දැයි දැන ගැනීමට කියවන්න.

කුඩා සංඛ්‍යා සඳහා මතකයේ වැඩි ඉඩක් ගන්නා දත්ත වර්ගයක් භාවිතා කිරීම නිර්දේශ නොකරයි. උදාහරණයක් ලෙස, අංක 1 සඳහා, බයිට් වර්ගය භාවිතා කිරීම ප්රමාණවත් වේ. මෙය ක්‍රියාත්මක කළ හැකි මොඩියුලයේ ක්‍රියාකාරිත්වය කෙරෙහි ධනාත්මක බලපෑමක් ඇති කරයි, විශේෂයෙන් දුර්වල පරිගණක මත. නමුත් මෙහි වැඩි දුරක් නොයෑම වැදගත්ය. ඔබ ඉතා සංයුක්ත දත්ත වර්ගයක් භාවිතා කරන්නේ නම්, විශාල අගයක් එයට නොගැලපේ.

නියත සහ විචල්‍ය ප්‍රකාශ කිරීම

ප්‍රථමයෙන් ප්‍රකාශ නොකර දත්ත බහාලුමක් භාවිතා කිරීම දැඩි ලෙස අධෛර්යමත් වේ. එවිට ගැටළු ගණනාවක් මතු විය හැකි අතර, එය වළක්වා ගැනීම සඳහා විචල්යයන් හෝ නියතයන් ගණනය කිරීම සමඟ කුඩා කේත පේළි කිහිපයක් ලිවීම අවශ්ය වේ.

විචල්‍යයක් ප්‍රකාශ කිරීම සඳහා, ඩිම් ප්‍රකාශය භාවිතා වේ. උදාහරණයක් ලෙස, මේ වගේ:

Dim Variable_Name as Integer

Variable_Name යනු විචල්‍යයේ නමයි. ඊළඟට, As operator ලියා ඇත, දත්ත වර්ගය දක්වයි. "Variable_Name" සහ "Integer" යන තන්තු වෙනුවට, ඔබට ඔබේම නම සහ දත්ත වර්ගය ඇතුළත් කළ හැක.

නියතයන් ද ප්‍රකාශ කළ හැක, නමුත් ඔබ ප්‍රථමයෙන් ඒවායේ අගය සඳහන් කළ යුතුය. විකල්පයන්ගෙන් එකක් වන්නේ:

const iMaxCount = 5000

සාධාරණ ලෙස, සමහර අවස්ථාවලදී ඔබට විචල්‍යයක් ප්‍රකාශ කිරීමකින් තොරව කළ හැකිය, නමුත් මෙම අවස්ථාවේදී ඔවුන්ට ස්වයංක්‍රීයව ප්‍රභේදයේ වර්ගය පවරනු ලැබේ. කෙසේ වෙතත්, පහත සඳහන් හේතු නිසා මෙය නිර්දේශ නොකරයි:

  1. ප්‍රභේදය බොහෝ සෙමින් සකසනු ලබන අතර, එවැනි විචල්‍යයන් බොහොමයක් තිබේ නම්, දුර්වල පරිගණකවල තොරතුරු සැකසීම සැලකිය යුතු ලෙස මන්දගාමී විය හැක. එම තත්පර තීරණය කරනු ඇති බව පෙනේ? නමුත් ඔබට කේත රේඛා විශාල ප්‍රමාණයක් ලිවීමට සිදුවුවහොත්, එය දුර්වල පරිගණකවලද ධාවනය කිරීමට සිදුවුවහොත් (තවමත් විකුණනු ලැබේ, නවීන කාර්යාල කට්ටල සඳහා විශාල RAM ප්‍රමාණයක් අවශ්‍ය වන බැවින්) ඔබට වැඩ සම්පූර්ණයෙන්ම නැවැත්විය හැකිය. මැක්‍රෝස් වැරදි ලෙස ලිවීම නිසා කුඩා RAM ප්‍රමාණයක් ඇති සහ සංකීර්ණ කාර්යයන් කිරීමට සැලසුම් කර නොමැති ස්මාර්ට් පොත් කැටි කිරීමට හේතු වූ අවස්ථා තිබේ. 
  2. නම්වල වැරදි මුද්‍රණයට අවසර ඇත, එය විකල්ප පැහැදිලි ප්‍රකාශය භාවිතයෙන් වැළැක්විය හැකිය, එය ඔබට ප්‍රකාශ නොකළ විචල්‍යයක් සොයා ගැනීමට ඉඩ සලසයි. කුඩාම අක්ෂර වින්‍යාසය පරිවර්තකයාට විචල්‍යය හඳුනා ගැනීමට නොහැකි වීමට හේතු වන බැවින් මෙය දෝෂ හඳුනා ගැනීමට පහසු ක්‍රමයකි. ඔබ විචල්‍ය ප්‍රකාශන මාදිලිය සක්‍රිය කළහොත්, මොඩියුලයේ ආරම්භයේදීම ප්‍රකාශ නොකළ දත්ත බහාලුම් හමු වුවහොත් පරිවර්තකයා ඔබට මැක්‍රෝව ධාවනය කිරීමට ඉඩ නොදේ.
  3. දත්ත වර්ගයට නොගැලපෙන විචල්‍ය අගයන් නිසා ඇති වන දෝෂ වළක්වා ගන්න. සාමාන්‍යයෙන්, පූර්ණ සංඛ්‍යා විචල්‍යයකට පෙළ අගයක් පැවරීම දෝෂයක් ඇති කරයි. ඔව්, එක් අතකින්, ප්‍රකාශයක් නොමැතිව සාමාන්‍ය වර්ගයක් පවරා ඇත, නමුත් ඒවා කල්තියා ප්‍රකාශ කළහොත් අහඹු දෝෂ වළක්වා ගත හැකිය.

එමනිසා, සෑම දෙයක්ම තිබියදීත්, Excel macros හි සියලුම විචල්යයන් ප්රකාශ කිරීම නිර්දේශ කරනු ලැබේ.

විචල්‍ය ප්‍රකාශ කිරීමේදී මතක තබා ගත යුතු තවත් කරුණක් ඇත. විචල්‍යයක් ප්‍රකාශ කිරීමේදී එයට කිසිදු අගයක් ලබා නොදිය හැකිය, නමුත් මෙම අවස්ථාවේ දී එය පෙරනිමි අගයක් ලබා ගනී. උදාහරණ වශයෙන්:

  1. රේඛා හිස් කර ඇත.
  2. සංඛ්‍යා 0 අගය ගනී.
  3. Boolean වර්ගයේ විචල්‍යයන් මුලින් අසත්‍ය ලෙස සැලකේ.
  4. පෙරනිමි දිනය 30 දෙසැම්බර් 1899 වේ.

උදාහරණයක් ලෙස, කලින් අගයක් සඳහන් කර නොතිබුනේ නම්, ඔබට 0 අගය පූර්ණ සංඛ්‍යා විචල්‍යයකට පැවරීමට අවශ්‍ය නොවේ. ඇය දැනටමත් මෙම අංකය අඩංගු වේ.

විකල්පය පැහැදිලි ප්රකාශය

මෙම ප්‍රකාශය මඟින් VBA කේතයේ භාවිතා වන සියලුම විචල්‍යයන් ප්‍රකාශ කිරීමට සහ කේතය ක්‍රියාත්මක වීමට පෙර ප්‍රකාශ නොකළ බහාලුම් තිබේද යන්න තීරණය කිරීමට ඔබට ඉඩ සලසයි. මෙම විශේෂාංගය භාවිතා කිරීම සඳහා, සාර්ව කේතයේ ඉහළින්ම විකල්ප පැහැදිලි කේතයක් ලියන්න.

ඔබට සෑම අවස්ථාවකදීම මෙම ප්‍රකාශය ඔබේ කේතයට ඇතුළත් කිරීමට අවශ්‍ය නම්, ඔබට VBA සංස්කාරකයේ විශේෂ සැකසුමකින් එය කළ හැක. මෙම විකල්පය සක්රිය කිරීමට, ඔබ කළ යුත්තේ:

  1. මාර්ගය ඔස්සේ සංවර්ධන පරිසරය වෙත යන්න - මෙවලම් > විකල්ප.
  2. මෙයින් පසු විවෘත වන කවුළුවෙහි, සංස්කාරක ටැබය විවෘත කරන්න.
  3. අවසාන වශයෙන්, අවශ්‍ය විචල්‍ය ප්‍රකාශන අයිතමය අසල ඇති කොටුව සලකුණු කරන්න.

මෙම පියවරයන් අවසන් වූ පසු, "OK" බොත්තම මත ක්ලික් කරන්න. 

එච්චරයි, දැන් සෑම නව මැක්‍රෝ එකක්ම ලියන විට, මෙම රේඛාව ස්වයංක්‍රීයව කේතයේ ඉහළට ඇතුළු වේ.

නියත සහ විචල්‍ය විෂය පථය

සෑම විචල්‍යයකටම හෝ නියතයකටම ඇත්තේ සීමිත විෂය පථයක් පමණි. එය ඔබ එය ප්රකාශ කරන ස්ථානය මත රඳා පවතී.

අපි හිතමු අපිට Function එකක් තියෙනවා කියලා මුළු_පිරිවැය(), සහ එය විචල්යය භාවිතා කරයි sVAT_Rate. මොඩියුලයේ පිහිටීම අනුව, එයට වෙනස් විෂය පථයක් ඇත:

විකල්පය පැහැදිලිය

sVAT_Rate තනි ලෙස අඳුරු කරන්න

කාර්යය මුළු_පිරිවැය() දෙගුණයක් ලෙස

.

.

.

අවසන් කාර්යය

මොඩියුලයක ඉහලින්ම විචල්‍යයක් ප්‍රකාශ කළහොත් එය එම මොඩියුලය පුරා ප්‍රචාරණය වේ. එනම්, එය සෑම ක්රියා පටිපාටියකින්ම කියවිය හැකිය.

එපමණක් නොව, එක් ක්‍රියා පටිපාටියක් විචල්‍යයේ අගය වෙනස් කළේ නම්, ඊළඟ එක ද මෙම නිවැරදි කළ අගය කියවනු ඇත. නමුත් වෙනත් මොඩියුලවල මෙම විචල්‍යය තවමත් කියවනු නොලැබේ.

විකල්පය පැහැදිලිය

කාර්යය මුළු_පිරිවැය() දෙගුණයක් ලෙස

sVAT_Rate තනි ලෙස අඳුරු කරන්න

   .

   .

   .

අවසන් කාර්යය

මෙම අවස්ථාවෙහිදී, විචල්‍යය ක්‍රියා පටිපාටිය තුළ ප්‍රකාශ කරනු ලබන අතර, එය වෙනත් ක්‍රියා පටිපාටියක භාවිතා කරන්නේ නම් පරිවර්තකයා දෝෂයක් ඇති කරයි.

ඔබට විචල්‍යය වෙනත් මොඩියුල මගින් කියවීමට අවශ්‍ය නම්, ඔබ Dim මූල පදය වෙනුවට පොදු මූල පදය භාවිතා කළ යුතුය. එලෙසම, Dim යන වචනය වෙනුවට ලියා ඇති Public ප්‍රකාශය භාවිතා කිරීමෙන් ඔබට විචල්‍යයක විෂය පථය වත්මන් මොඩියුලයට පමණක් සීමා කළ හැකිය.

ඔබට නියත වල විෂය පථය සමාන ආකාරයකින් සැකසිය හැක, නමුත් මෙහි මූල පදය Const operator සමඟ ලියා ඇත.

එය නියත සහ විචල්‍ය සමඟ ක්‍රියා කරන ආකාරය පිළිබඳ හොඳ උදාහරණයක් සහිත වගුවක් මෙන්න.

විකල්පය පැහැදිලිය

පොදු sVAT_Rate තනි ලෙස

පොදු කොන්ස්ට් iMax_Count = 5000

මෙම උදාහරණයේදී, විචල්‍යයක් ප්‍රකාශ කිරීමට Public Keyword භාවිතා කරන ආකාරය සහ පොදු නියතයක් ප්‍රකාශ කිරීම සඳහා Visual Basic සංස්කාරකයේ ඔබ ලිවිය යුතු දේ ඔබට දැක ගත හැක. මෙම අගය බහාලුම්වල විෂය පථය සියලුම මොඩියුල සඳහා අදාළ වේ.
විකල්පය පැහැදිලිය

පුද්ගලික sVAT_Rate තනි ලෙස

පුද්ගලික කොන්ස්ට් iMax_Count = 5000

මෙහිදී, විචල්‍යයන් සහ නියතයන් ප්‍රකාශ කරනු ලබන්නේ පුද්ගලික මූල පදය භාවිතා කරමිනි. මෙයින් අදහස් කරන්නේ ඒවා වත්මන් මොඩියුලය තුළ පමණක් දැකිය හැකි අතර අනෙකුත් මොඩියුලවල ක්රියා පටිපාටි භාවිතා කළ නොහැකි බවයි.

නියතයන් සහ විචල්‍යයන් අවශ්‍ය වන්නේ ඇයි?

නියතයන් සහ විචල්‍යයන් භාවිතා කිරීම මඟින් කේතයේ අවබෝධතා මට්ටම වැඩි කිරීමට ඔබට ඉඩ සලසයි. සාමාන්‍යයෙන් ආරම්භකයින්ට විචල්‍යයන් අවශ්‍ය වන්නේ මන්දැයි ප්‍රශ්න නොමැති නම්, නියතයන් සඳහා අවශ්‍යතාවය සම්බන්ධයෙන් බොහෝ අපැහැදිලි තිබේ. මෙම ප්‍රශ්නය මුලින්ම බැලූ බැල්මට තරමක් තාර්කික බව පෙනේ. සියල්ලට පසු, ඔබට විචල්‍යයක් එක් වරක් ප්‍රකාශ කළ හැකි අතර එය කිසි විටෙකත් වෙනස් නොකරන්න.

මතකයේ විශාල ඉඩක් හිමි දත්ත වර්ග භාවිතය සම්බන්ධයෙන් පිළිතුර එකම තලයක කොතැනක හෝ තිබෙන බව පෙනේ. අපි විශාල විචල්‍ය සංඛ්‍යාවක් සමඟ කටයුතු කරන්නේ නම්, අපට පවතින බහාලුමක් අහම්බෙන් වෙනස් කළ හැකිය. යම් අගයක් කිසි විටෙකත් වෙනස් නොවන බව පරිශීලකයා නියම කරන්නේ නම්, පරිසරය ස්වයංක්‍රීයව මෙය පාලනය කරයි.

මැක්රෝ ක්‍රමලේඛකයින් කිහිප දෙනෙකු විසින් ලියන විට මෙය විශේෂයෙන් වැදගත් වේ. සමහර විචල්‍ය වෙනස් නොවිය යුතු බව කෙනෙකුට දැනගත හැකිය. අනික එහෙම නෑ. ඔබ කොන්ස්ට් ක්‍රියාකරු නියම කරන්නේ නම්, මෙම අගය වෙනස් නොවන බව වෙනත් සංවර්ධකයෙකු දැන ගනු ඇත.

නැතහොත්, එක් නමක් සහිත නියතයක් තිබේ නම් සහ විචල්‍යයට වෙනස්, නමුත් සමාන නමක් තිබේ නම්. සංවර්ධකයාට ඒවා සරලව ව්යාකූල කළ හැකිය. උදාහරණයක් ලෙස, වෙනස් කිරීමට අවශ්‍ය නොවන එක් විචල්‍යයක් Variable11 ලෙසත්, සංස්කරණය කළ හැකි තවත් එකක් Variable1 ලෙසත් හැඳින්වේ. පුද්ගලයෙකුට ස්වයංක්‍රීයව, කේතය ලිවීමේදී, අහම්බෙන් අමතර ඒකකයක් මඟ හැර එය නොදැකිය හැක. එහි ප්රතිඵලයක් වශයෙන්, අගයන් සඳහා කන්ටේනරය වෙනස් වනු ඇත, එය ස්පර්ශ නොකළ යුතුය.

නැතහොත් සංවර්ධකයාට තමාට ස්පර්ශ කළ හැකි සහ කළ නොහැකි විචල්‍යයන් අමතක විය හැකිය. කේතය සති කිහිපයක් සඳහා ලියා ඇති විට මෙය බොහෝ විට සිදු වන අතර එහි විශාලත්වය විශාල වේ. මෙම කාලය තුළ, මෙම හෝ එම විචල්යය අදහස් කරන්නේ කුමක්ද යන්න පවා අමතක කිරීම ඉතා පහසුය.

ඔව්, ඔබට මෙම තත්වය තුළ අදහස් දැක්වීම් සමඟ කළ හැකිය, නමුත් Const යන වචනය සඳහන් කිරීම පහසු නොවේ ද?

නිගමන

විචල්‍යයන් යනු මැක්‍රෝ ක්‍රමලේඛනයේ අත්‍යවශ්‍ය අංගයක් වන අතර එමඟින් ඔබට සංකීර්ණ මෙහෙයුම් සිදු කිරීමට ඉඩ සලසයි, ගණනය කිරීම් වල සිට ඇතැම් සිදුවීම් පිළිබඳව පරිශීලකයාට දැනුම් දීම හෝ පැතුරුම්පතක සෛලවල නිශ්චිත අගයන් නියම කිරීම.

අනාගතයේදී මෙම බහාලුම්වල අන්තර්ගතය වෙනස් නොවන බව සංවර්ධකයා නිසැකවම දන්නේ නම් නියතයන් භාවිතා කළ යුතුය. අහම්බෙන් වැරදීමක් සිදු විය හැකි බැවින් ඒ වෙනුවට විචල්‍ය භාවිතා නොකිරීමට නිර්දේශ කෙරේ.

ඔබමයි