VBA හි විචල්‍යයන් සහ නියතයන්

VBA හි, වෙනත් ඕනෑම ක්‍රමලේඛන භාෂාවක මෙන්, ඕනෑම අගයක් ගබඩා කිරීම සඳහා විචල්‍යයන් සහ නියතයන් භාවිතා වේ. නමේ අඟවන පරිදි, විචල්‍යයන් වෙනස් විය හැකි අතර, නියතයන් ස්ථාවර අගයන් ගබඩා කරයි.

උදාහරණයක් ලෙස, නියතයක් Pi 3,14159265 අගය ගබඩා කරයි... වැඩසටහන ක්‍රියාත්මක කිරීමේදී “Pi” අංකය වෙනස් නොවනු ඇත, නමුත් එවැනි අගයක් නියතයක් ලෙස ගබඩා කිරීම තවමත් වඩාත් පහසු වේ.

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

දත්ත වර්ග

සියලුම විචල්‍යයන් සහ නියතයන් විශේෂිත දත්ත වර්ගයකි. පහත වගුව VBA හි භාවිතා වන දත්ත වර්ග විස්තරයක් සහ හැකි අගයන් පරාසයක් සමඟ ලැයිස්තුගත කරයි:

දත්ත වර්ගය තරමවිස්තරසාරධර්ම පරාසය
බයිට්1 බයිට්ධන නිඛිල; ද්විමය දත්ත සඳහා බොහෝ විට භාවිතා වේ0 සිට 255 කිරීමට
බූලියන්2 බයිට්සත්‍ය හෝ අසත්‍ය විය හැකසත්‍ය හෝ අසත්‍යය
පූර්ණ සංඛ්යාවක්2 බයිට්සම්පූර්ණ සංඛ්‍යා (භාගික කොටසක් නැත)-32 සිට +768 දක්වා
දිගු4 බයිට්විශාල පූර්ණ සංඛ්‍යා (භාගික කොටසක් නැත)от -2 147 483 648 до +2 147 483 647
තනි4 බයිට්තනි නිරවද්‍ය පාවෙන ලක්ෂ්‍ය අංකය-3.4e38 සිට +3.4e38 දක්වා
ද්විත්ව8 බයිට්ද්විත්ව නිරවද්‍ය පාවෙන ලක්ෂ්‍ය අංකය-1.8e308 සිට +1.8e308 දක්වා
මුදල්8 බයිට්ස්ථාවර දශමස්ථාන සංඛ්‍යාවක් සහිත පාවෙන ලක්ෂ්‍ය අංකයот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
දිනය8 බයිට්දිනය සහ වේලාව - දිනය පිළිබඳ දත්ත පාවෙන ලක්ෂ්‍ය අංකයකින් නිරූපණය කෙරේ. මෙම සංඛ්‍යාවේ පූර්ණ සංඛ්‍යා කොටස දිනය ප්‍රකාශ කරන අතර භාගික කොටස කාලය ප්‍රකාශ කරයි.ජනවාරි 1, 100 සිට දෙසැම්බර් 31, 9999 දක්වා
වස්තුව4 බයිට්වස්තු යොමුවඕනෑම වස්තුවක් යොමු කිරීම
Stringවෙනස් වෙමින් පවතීඅක්ෂර කට්ටලය. String වර්ගය ස්ථාවර හෝ විචල්‍ය දිගකින් යුක්ත විය හැක. විචල්ය දිග සමඟ වඩාත් බහුලව භාවිතා වේස්ථාවර දිග - ආසන්න වශයෙන් අක්ෂර 65 දක්වා. විචල්‍ය දිග - දළ වශයෙන් අකුරු බිලියන 500ක් දක්වා
ප්රභේද්යයක්වෙනස් වෙමින් පවතීදිනයක්, පාවෙන, හෝ අක්ෂර තන්තුවක් අඩංගු විය හැක. කුමන ආකාරයේ දත්ත ඇතුළත් කරන්නේ දැයි කල්තියා නොදන්නා අවස්ථාවන්හිදී මෙම වර්ගය භාවිතා වේ.අංකය - ද්විත්ව, string - String

නිසැකවම, ඉහත වගුව භාවිතා කර නිවැරදි දත්ත වර්ගය තෝරා ගැනීමෙන් ඔබට මතකය වඩාත් ආර්ථිකව භාවිතා කළ හැකිය (උදාහරණයක් ලෙස, දත්ත වර්ගය තෝරන්න පූර්ණ සංඛ්යාවක් වෙනුවට දිගු or තනි වෙනුවට ද්විත්ව) කෙසේ වෙතත්, වඩාත් සංයුක්ත දත්ත වර්ග භාවිතා කරන විට, ඔබේ කේතය අසමාන ලෙස විශාල අගයන් ඒවාට ගැළපීමට උත්සාහ නොකිරීමට ඔබ ප්‍රවේශම් විය යුතුය.

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

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

• පාඨ තන්තු හිස් තන්තු වලින් ආරම්භ කර ඇත;

• අංක - අගය 0;

• විචල්‍ය වර්ග බූලියන් - බොරු;

• දින - 30 දෙසැම්බර් 1899.

විචල්‍යයක් හෝ නියතයක් භාවිතා කිරීමට පෙර එය ප්‍රකාශ කළ යුතුය. මෙය සිදු කිරීම සඳහා, macro වෙත පහත සරල කේත පේළිය එක් කරන්න:

Dim Имя_Переменной As Тип_Данных

ඉහත කේතයේ පේළියේ විචල්ය_ නාමය කේතයේ භාවිතා වන විචල්‍යයේ නම වේ, සහ දත්ත_වර්ගය මෙම ලිපියේ මඳක් කලින් ලබා දී ඇති වගුවේ දත්ත වර්ග වලින් එකකි. උදාහරණ වශයෙන්:

ඩිම් sVAT_Rate Single Dim සහ integer ලෙස

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

Const iMaxCount = 5000 Const iMaxScore = 100

Excel හි විචල්‍ය ප්‍රකාශ කිරීම අවශ්‍ය නොවේ. පෙරනිමියෙන්, එක්සෙල් හි ඇතුළත් කර ඇති නමුත් ප්‍රකාශ නොකළ විචල්‍ය සියල්ලටම වර්ගය ඇත ප්රභේද්යයක් සහ සංඛ්‍යාත්මක සහ පාඨ අගය යන දෙකම පිළිගැනීමට හැකි වනු ඇත.

මේ අනුව, ක්‍රමලේඛකයාට ඕනෑම වේලාවක නව විචල්‍යය භාවිතා කළ හැකිය (එය ප්‍රකාශ කර නොමැති වුවද), සහ Excel එය වර්ග විචල්‍යයක් ලෙස සලකනු ඇත. ප්රභේද්යයක්. කෙසේ වෙතත්, මෙය සිදු නොකළ යුතු හේතු කිහිපයක් තිබේ:

  1. මතක භාවිතය සහ ගණනය කිරීමේ වේගය. ඔබ දත්ත වර්ගය පිළිබඳ ඇඟවීමක් සහිත විචල්‍යයක් ප්‍රකාශ නොකරන්නේ නම්, පෙරනිමියෙන් එය වර්ගයට සකසනු ඇත. ප්රභේද්යයක්. මෙම දත්ත වර්ගය අනෙකුත් දත්ත වර්ග වලට වඩා වැඩි මතකයක් භාවිතා කරයි. විචල්‍යයකට අමතර බයිට් කිහිපයක් එතරම් ශබ්දයක් නොවේ, නමුත් ප්‍රායෝගිකව, වැඩසටහන් වලට විචල්‍ය දහස් ගණනක් තිබිය හැකිය (විශේෂයෙන් අරා සමඟ වැඩ කරන විට). එමනිසා, වැනි විචල්‍යයන් භාවිතා කරන අමතර මතකය ප්රභේද්යයක්, වර්ගයේ විචල්යයන් සමඟ සසඳන විට පූර්ණ සංඛ්යාවක් or තනි, සැලකිය යුතු මුදලක් එකතු කළ හැක. මීට අමතරව, වර්ගයේ විචල්යයන් සමඟ මෙහෙයුම් ප්රභේද්යයක් වෙනත් වර්ගවල විචල්‍යයන්ට වඩා ඉතා සෙමින් ක්‍රියාත්මක වේ, පිළිවෙලින්, අමතර වර්ගයේ විචල්‍ය දහසක් ප්රභේද්යයක් ගණනය කිරීම් සැලකිය යුතු ලෙස මන්දගාමී කළ හැකිය.
  2. විචල්‍ය නම් වල අකුරු වැරදි වැළැක්වීම. සියලුම විචල්‍යයන් ප්‍රකාශ කර ඇත්නම්, VBA ප්‍රකාශය භාවිතා කළ හැක - විකල්පය පැහැදිලිය (අපි ඒ ගැන පසුව කතා කරමු) සියලුම ප්‍රකාශ නොකළ විචල්‍යයන් හඳුනා ගැනීම සඳහා. මෙය වැරදි ලෙස ලියා ඇති විචල්‍ය නාමයක ප්‍රති result ලයක් ලෙස වැඩසටහනේ දෝෂයක පෙනුම ඉවත් කරයි. උදාහරණයක් ලෙස, නම් කරන ලද විචල්‍යයක් භාවිතා කිරීම sVAT_Rate, ඔබට යතුරු ලියනය කළ හැකි අතර, මෙම විචල්‍යයට අගයක් පවරමින්, ලියන්න: "VATRate = 0,175". මින් ඉදිරියට එය විචල්‍යය වනු ඇතැයි අපේක්ෂා කෙරේ sVAT_Rate 0,175 අගය අඩංගු විය යුතුය - නමුත් ඇත්ත වශයෙන්ම එය එසේ නොවේ. භාවිතා කරන සියලුම විචල්‍යයන් අනිවාර්ය ප්‍රකාශ කිරීමේ මාදිලිය සක්‍රීය කර ඇත්නම්, VBA සම්පාදකය විචල්‍යය සොයා නොගන්නා බැවින් වහාම දෝෂයක් දක්වයි. VATRrate නිවේදනය කළ අය අතර.
  3. විචල්‍යයක ප්‍රකාශිත වර්ගයට නොගැලපෙන අගයන් උද්දීපනය කිරීම. ඔබ යම් ආකාරයක විචල්‍යයක් ප්‍රකාශ කර වෙනත් වර්ගයක දත්ත එයට පැවරීමට උත්සාහ කළහොත්, ඔබට දෝෂයක් ලැබෙනු ඇත, එය නිවැරදි නොකළහොත් වැඩසටහන බිඳවැටීමට හේතු විය හැක. මුලින්ම බැලූ බැල්මට, මෙය විචල්‍යයන් ප්‍රකාශ නොකිරීමට හොඳ හේතුවක් සේ පෙනේ, නමුත් ඇත්ත වශයෙන්ම, එක් විචල්‍යයකට ලැබීමට නියමිතව තිබූ වැරදි දත්ත ලැබී ඇති බව පෙරට වඩා - වඩා හොඳය! එසේ නොමැති නම්, වැඩසටහන දිගටම ක්‍රියාත්මක වුවහොත්, ප්‍රති result ලය වැරදි සහ අනපේක්ෂිත විය හැකි අතර, දෝෂ වලට හේතුව සොයා ගැනීම වඩා දුෂ්කර වනු ඇත. මැක්‍රෝව "සාර්ථකව" ක්‍රියාත්මක වීමටද ඉඩ ඇත. ප්රතිඵලයක් වශයෙන්, දෝෂය නොපෙනී යන අතර වැරදි දත්ත සමඟ වැඩ දිගටම කරගෙන යනු ඇත!

මේ සම්බන්ධයෙන්, වැරදි දත්ත වර්ගයක් හඳුනා ගැනීම සහ හැකි ඉක්මනින් කේතයේ එවැනි දෝෂ නිවැරදි කිරීම යෝග්ය වේ. මෙම හේතූන් නිසා, VBA macro ලිවීමේදී ඔබ සියලු විචල්‍යයන් ප්‍රකාශ කිරීම නිර්දේශ කෙරේ.

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

ක්රියාකරු විකල්පය පැහැදිලිය VBA කේතයේ භාවිතා කරන සියලුම විචල්‍යයන් ප්‍රකාශ කිරීමට හේතු වන අතර, සම්පාදනය කිරීමේදී (කේත ක්‍රියාත්මක කිරීම ආරම්භ කිරීමට පෙර) සියලුම ප්‍රකාශ නොකළ විචල්‍යයන් දෝෂ ලෙස සලකුණු කරයි. මෙම ක්‍රියාකරු යෙදීම අපහසු නැත - VBA ගොනුවේ ඉහලින්ම මෙම පේළිය ලියන්න:

Option Explicit

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

මෙය සිදු කරන්නේ මේ ආකාරයට ය:

  • Visual Basic Editor මෙනුවෙන්, ක්ලික් කරන්න මෙවලම් > විකල්ප
  • දිස්වන සංවාදයේ, ටැබ් එක විවෘත කරන්න සංස්කරණය හෝ
  • කොටුව සලකුණු කරන්න විචල්‍ය ප්‍රකාශයක් අවශ්‍ය වේ සහ මාධ්ය OK

සබල කළ විට, තන්තුව විකල්පය පැහැදිලිය සාදනු ලබන සෑම නව මොඩියුලයකම ආරම්භයේදීම ස්වයංක්‍රීයව ඇතුල් කරනු ලැබේ.

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

සෑම ප්‍රකාශිත විචල්‍යයකට හෝ නියතයකටම තමන්ගේම සීමිත විෂය පථයක් ඇත, එනම් මෙම විචල්‍යය පවතින වැඩසටහනේ සීමිත කොටසකි. විෂය පථය රඳා පවතින්නේ විචල්‍යයේ හෝ නියතයේ ප්‍රකාශය සිදු කළේ කොතැනද යන්න මතය. උදාහරණයක් ලෙස, විචල්යය ගන්න sVAT_Rate, ශ්‍රිතයේ භාවිතා වන මුළු_පිරිවැය. පහත වගුවේ විචල්‍ය විෂය පථය සඳහා විකල්ප දෙකක් සාකච්ඡා කෙරේ sVAT_Rateමොඩියුලයේ විවිධ තනතුරු දෙකකින් ප්‍රකාශ කර ඇත:

විකල්පය පැහැදිලි අඳුරු sVAT_Rate Single Function ලෙස Total_Cost() Double ... End Function
විචල්යය නම් sVAT_Rate මොඩියුලයේ ආරම්භයේදීම ප්‍රකාශ කරනු ලැබේ, එවිට මෙම විචල්‍යයේ විෂය පථය සම්පූර්ණ මොඩියුලයම වේ (එනම් විචල්‍යය sVAT_Rate මෙම මොඩියුලයේ සියලුම ක්රියා පටිපාටි මගින් හඳුනාගනු ඇත).

එබැවින්, කාර්යයේ නම් මුළු_පිරිවැය විචල්ය sVAT_Rate යම් අගයක් පවරනු ලැබේ, එවිට එම මොඩියුලය තුළ ක්‍රියාත්මක වන මීළඟ ශ්‍රිතය විචල්‍යය භාවිතා කරයි sVAT_Rate එකම අර්ථයෙන්.

කෙසේ වෙතත්, වෙනත් මොඩියුලයක පිහිටා ඇති යම් ශ්‍රිතයක් හැඳින්වෙන්නේ නම්, ඒ සඳහා විචල්‍යය sVAT_Rate දැන නොගනු ඇත.

විකල්පය පැහැදිලි කාර්යය Total_Cost() ද්විත්ව අඳුරු ලෙස sVAT_Rate තනි ... අවසන් කාර්යය
විචල්යය නම් sVAT_Rate කාර්යය ආරම්භයේදී ප්‍රකාශ කරන ලදී මුළු_පිරිවැය, එවිට එහි විෂය පථය මෙම ශ්‍රිතයට පමණක් සීමා වනු ඇත (එනම් ශ්‍රිතය තුළ මුළු_පිරිවැය, ඔබට විචල්යය භාවිතා කළ හැකිය sVAT_Rate, නමුත් පිටත නොවේ).

භාවිතා කිරීමට උත්සාහ කරන විට sVAT_Rate වෙනත් ක්‍රියා පටිපාටියකදී, මෙම විචල්‍යය ශ්‍රිතයෙන් පිටත ප්‍රකාශ නොකළ නිසා VBA සම්පාදකය දෝෂයක් වාර්තා කරයි මුළු_පිරිවැය (ක්‍රියාකරු භාවිතා කරන්නේ නම් විකල්පය පැහැදිලිය).

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

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

නියතයන් ප්‍රකාශ කිරීමට ඔබට මූල පද භාවිතා කළ හැකිය. පොදු и පෞද්ගලික, නමුත් මූල පදය වෙනුවට නොවේ කොන්ස්, එය සමඟ.

පහත උදාහරණ මගින් මූල පද භාවිතය පෙන්වයි පොදු и පෞද්ගලික විචල්යයන් සහ නියතයන් සඳහා යොදනු ලැබේ.

විකල්පය පැහැදිලි පොදු sVAT_Rate තනි පොදු Const iMax_Count = 5000 ...    
මෙම උදාහරණයේ, මූල පදය පොදු විචල්‍යයක් ප්‍රකාශ කිරීමට භාවිතා කරයි sVAT_Rate සහ නියතයන් iMax_Count. මේ ආකාරයෙන් ප්රකාශිත මූලද්රව්යවල විෂය පථය සමස්ත වත්මන් ව්යාපෘතිය වනු ඇත.

ඒ කියන්නේ sVAT_Rate и iMax_Count ඕනෑම ව්‍යාපෘති මොඩියුලයකින් ලබා ගත හැක.

විකල්පය පැහැදිලි පුද්ගලික sVAT_Rate තනි පුද්ගලික අනුපාත ලෙස iMax_Count = 5000 ...    
මෙම උදාහරණයේදී, විචල්‍යයක් ප්‍රකාශ කිරීමට sVAT_Rate සහ නියතයන් iMax_Count භාවිතා කරන ලද මූල පදය පෞද්ගලික. මෙම මූලද්රව්යවල විෂය පථය වත්මන් මොඩියුලය වේ.

ඒ කියන්නේ sVAT_Rate и iMax_Count වත්මන් මොඩියුලයේ සියලුම ක්‍රියා පටිපාටිවල පවතිනු ඇත, නමුත් අනෙකුත් මොඩියුලවල ක්‍රියා පටිපාටි සඳහා ලබා ගත නොහැක.

ඔබමයි