VBA இல் மாறிகள் மற்றும் மாறிலிகள்

VBA இல், வேறு எந்த நிரலாக்க மொழியிலும், எந்த மதிப்புகளையும் சேமிக்க மாறிகள் மற்றும் மாறிலிகள் பயன்படுத்தப்படுகின்றன. பெயர் குறிப்பிடுவது போல, மாறிகள் மாறலாம், அதே சமயம் மாறிலிகள் நிலையான மதிப்புகளை சேமிக்கும்.

உதாரணமாக, ஒரு நிலையான Pi 3,14159265 மதிப்பை சேமிக்கிறது… நிரலின் செயல்பாட்டின் போது "பை" எண் மாறாது, ஆனால் அத்தகைய மதிப்பை மாறிலியாக சேமிப்பது இன்னும் வசதியானது.

அதே நேரத்தில், நாம் மாறியைப் பயன்படுத்தலாம் sVAT_Rate வாங்கிய பொருட்களின் மீது VAT விகிதத்தை சேமிக்க. மாறி மதிப்பு 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 பைட்டுகள்பொருள் குறிப்புஏதேனும் பொருள் குறிப்பு
சரம்மாறி வருகிறதுஎழுத்துத் தொகுப்பு. சரம் வகை நிலையான அல்லது மாறி நீளமாக இருக்கலாம். மாறி நீளத்துடன் பொதுவாகப் பயன்படுத்தப்படுகிறதுநிலையான நீளம் - தோராயமாக 65 எழுத்துகள் வரை. மாறி நீளம் - தோராயமாக 500 பில்லியன் எழுத்துகள் வரை
மாற்றுமாறி வருகிறதுதேதி, மிதவை அல்லது எழுத்துச் சரம் இருக்கலாம். எந்த வகையான தரவு உள்ளிடப்படும் என்பது முன்கூட்டியே தெரியாத சந்தர்ப்பங்களில் இந்த வகை பயன்படுத்தப்படுகிறது.எண் - இரட்டை, சரம் - சரம்

வெளிப்படையாக, மேலே உள்ள அட்டவணையைப் பயன்படுத்தி சரியான தரவு வகையைத் தேர்வுசெய்தால், நீங்கள் நினைவகத்தை சிக்கனமாகப் பயன்படுத்தலாம் (எடுத்துக்காட்டாக, தரவு வகையைத் தேர்ந்தெடுக்கவும் முழு பதிலாக நீண்ட or ஒற்றை பதிலாக இரட்டை) இருப்பினும், மிகவும் கச்சிதமான தரவு வகைகளைப் பயன்படுத்தும் போது, ​​உங்கள் குறியீடு அளவுக்கதிகமாக பெரிய மதிப்புகளை அவற்றில் பொருத்த முயற்சிக்காது என்பதில் கவனமாக இருக்க வேண்டும்.

மாறிகள் மற்றும் மாறிலிகளை அறிவித்தல்

மொழிபெயர்ப்பாளரின் குறிப்பு: VBA இல் உள்ள மாறிகளைப் பற்றி பேசுகையில், இன்னும் ஒரு மிக முக்கியமான விஷயத்தைக் குறிப்பிடுவது மதிப்பு. நாம் ஒரு மாறியை அறிவித்தாலும் அதற்கு எந்த மதிப்பையும் ஒதுக்கவில்லை என்றால், அது இயல்புநிலை மதிப்புடன் துவக்கப்படும்:

• உரைச் சரங்கள் வெற்றுச் சரங்களுடன் துவக்கப்படும்;

• எண்கள் - மதிப்பு 0;

• வகை மாறிகள் பூலியன் - தவறான;

• தேதிகள் – டிசம்பர் 30, 1899.

மாறி அல்லது மாறிலியைப் பயன்படுத்துவதற்கு முன், அது அறிவிக்கப்பட வேண்டும். இதைச் செய்ய, மேக்ரோவில் பின்வரும் எளிய குறியீட்டைச் சேர்க்கவும்:

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

மேலே உள்ள குறியீட்டு வரியில் மாறி_பெயர் குறியீட்டில் பயன்படுத்தப்படும் மாறியின் பெயர், மற்றும் தரவு_வகை இந்த கட்டுரையில் சற்று முன்னர் கொடுக்கப்பட்ட அட்டவணையில் இருந்து தரவு வகைகளில் ஒன்றாகும். உதாரணத்திற்கு:

மங்கலான sVAT_ரேட் ஒற்றை மங்கலாக மற்றும் முழு எண்ணாக

மாறிலிகள் இதேபோல் அறிவிக்கப்படுகின்றன, ஆனால் மாறிலிகளை அறிவிக்கும்போது, ​​அவற்றின் மதிப்பு உடனடியாகக் குறிக்கப்பட வேண்டும். உதாரணமாக, இது போன்றது:

கான்ஸ்ட் iMaxCount = 5000 கான்ஸ்ட் iMaxScore = 100

எக்செல் இல் மாறிகளை அறிவிக்க வேண்டிய அவசியமில்லை. இயல்பாக, எக்செல் இல் உள்ளிடப்பட்ட ஆனால் அறிவிக்கப்படாத மாறிகள் அனைத்தும் வகையைக் கொண்டிருக்கும் மாற்று மற்றும் எண் மற்றும் உரை மதிப்பு இரண்டையும் ஏற்க முடியும்.

எனவே, புரோகிராமர் எந்த நேரத்திலும் புதிய மாறியைப் பயன்படுத்தலாம் (அது அறிவிக்கப்படாவிட்டாலும் கூட), மேலும் எக்செல் அதை வகையின் மாறியாகக் கருதும். மாற்று. இருப்பினும், இதை ஏன் செய்யக்கூடாது என்பதற்கு பல காரணங்கள் உள்ளன:

  1. நினைவக பயன்பாடு மற்றும் கணக்கீட்டு வேகம். தரவு வகையைக் குறிக்கும் ஒரு மாறியை நீங்கள் அறிவிக்கவில்லை என்றால், இயல்பாக அது வகைக்கு அமைக்கப்படும் மாற்று. இந்த தரவு வகை மற்ற தரவு வகைகளை விட அதிக நினைவகத்தைப் பயன்படுத்துகிறது. ஒரு மாறிக்கு ஒரு சில கூடுதல் பைட்டுகள் அதிகமாகத் தெரியவில்லை, ஆனால் நடைமுறையில், நிரல்களில் ஆயிரக்கணக்கான மாறிகள் இருக்கலாம் (குறிப்பாக அணிவரிசைகளுடன் பணிபுரியும் போது). எனவே, போன்ற மாறிகளால் பயன்படுத்தப்படும் கூடுதல் நினைவகம் மாற்று, வகை மாறிகள் ஒப்பிடும்போது முழு or ஒற்றை, குறிப்பிடத்தக்க அளவு வரை சேர்க்கலாம். கூடுதலாக, வகை மாறிகள் கொண்ட செயல்பாடுகள் மாற்று மற்ற வகைகளின் மாறிகளை விட மிக மெதுவாக செயல்படுத்தப்படுகிறது, முறையே, கூடுதல் ஆயிரம் மாறிகள் வகை மாற்று கணக்கீடுகளை கணிசமாக குறைக்கலாம்.
  2. மாறி பெயர்களில் எழுத்துப் பிழைகளைத் தடுத்தல். அனைத்து மாறிகளும் அறிவிக்கப்பட்டால், VBA அறிக்கையைப் பயன்படுத்தலாம் - விருப்பம் வெளிப்படையானது (அதைப் பற்றி பின்னர் பேசுவோம்) அனைத்து அறிவிக்கப்படாத மாறிகளையும் அடையாளம் காண்பதற்காக. இது தவறாக எழுதப்பட்ட மாறி பெயரின் விளைவாக நிரலில் பிழையின் தோற்றத்தை நீக்குகிறது. எடுத்துக்காட்டாக, பெயரிடப்பட்ட மாறியைப் பயன்படுத்துதல் sVAT_Rate, நீங்கள் ஒரு எழுத்துப்பிழை செய்யலாம் மற்றும் இந்த மாறிக்கு ஒரு மதிப்பை ஒதுக்கி, எழுதவும்: "VATRate = 0,175". இனிமேல், மாறி இருக்கும் என்று எதிர்பார்க்கப்படுகிறது sVAT_Rate 0,175 மதிப்பைக் கொண்டிருக்க வேண்டும் - ஆனால் நிச்சயமாக அது இல்லை. பயன்படுத்தப்பட்ட அனைத்து மாறிகளின் கட்டாய அறிவிப்பு முறை இயக்கப்பட்டிருந்தால், VBA கம்பைலர் உடனடியாக ஒரு பிழையைக் குறிக்கும், ஏனெனில் அது மாறியைக் கண்டறியாது. வாட்ரேட் அறிவிக்கப்பட்டவர்களில்.
  3. ஒரு மாறியின் அறிவிக்கப்பட்ட வகையுடன் பொருந்தாத மதிப்புகளை முன்னிலைப்படுத்துகிறது. நீங்கள் ஒரு குறிப்பிட்ட வகையின் மாறியை அறிவித்து, அதற்கு வேறு வகையின் தரவை ஒதுக்க முயற்சித்தால், நீங்கள் ஒரு பிழையைப் பெறுவீர்கள், அதைச் சரிசெய்யாமல் விட்டுவிட்டால், நிரல் செயலிழக்கச் செய்யலாம். முதல் பார்வையில், மாறிகளை அறிவிக்காமல் இருப்பதற்கு இது ஒரு நல்ல காரணம் போல் தோன்றலாம், ஆனால் உண்மையில், மாறிகளில் ஒன்று பெற வேண்டிய தவறான தரவைப் பெற்றது என்பதை விட - மிகவும் சிறந்தது! இல்லையெனில், நிரல் தொடர்ந்து இயங்கினால், முடிவுகள் தவறாகவும் எதிர்பாராததாகவும் இருக்கலாம், மேலும் பிழைகளின் காரணத்தைக் கண்டுபிடிப்பது மிகவும் கடினமாக இருக்கும். மேக்ரோ "வெற்றிகரமாக" செயல்படுத்தப்படுவதும் சாத்தியமாகும். இதன் விளைவாக, பிழை கவனிக்கப்படாமல் போகும் மற்றும் தவறான தரவுகளுடன் வேலை தொடரும்!

இது சம்பந்தமாக, தவறான தரவு வகையைக் கண்டறிந்து, குறியீட்டில் உள்ள பிழைகளை முடிந்தவரை சீக்கிரம் சரிசெய்வது விரும்பத்தக்கது. இந்த காரணங்களுக்காக, VBA மேக்ரோவை எழுதும் போது அனைத்து மாறிகளையும் அறிவிக்க பரிந்துரைக்கப்படுகிறது.

விருப்பம் வெளிப்படையானது

ஆபரேட்டர் விருப்பம் வெளிப்படையானது VBA குறியீட்டில் பயன்படுத்தப்படும் அனைத்து மாறிகளும் அறிவிக்கப்படுவதற்கு காரணமாகிறது, மேலும் அனைத்து அறிவிக்கப்படாத மாறிகளையும் தொகுப்பின் போது பிழைகள் எனக் கொடியிடுகிறது (குறியீடு செயல்படுத்தல் தொடங்கும் முன்). இந்த ஆபரேட்டரைப் பயன்படுத்துவது கடினம் அல்ல - இந்த வரியை VBA கோப்பின் மேல் பகுதியில் எழுதவும்:

Option Explicit

நீங்கள் எப்போதும் செருக விரும்பினால் விருப்பம் வெளிப்படையானது உருவாக்கப்பட்ட ஒவ்வொரு புதிய VBA தொகுதியின் மேற்பகுதியிலும், இது தானாகவே செய்யப்படலாம். இதைச் செய்ய, நீங்கள் விருப்பத்தை இயக்க வேண்டும் மாறி பிரகடனம் தேவை VBA எடிட்டர் அமைப்புகளில்.

இது இப்படி செய்யப்படுகிறது:

  • விஷுவல் பேசிக் எடிட்டர் மெனுவிலிருந்து, கிளிக் செய்யவும் கருவிகள் > விருப்பங்கள்
  • தோன்றும் உரையாடலில், தாவலைத் திறக்கவும் ஆசிரியர்
  • பெட்டியை சரிபார்க்கவும் மாறி பிரகடனம் தேவை மற்றும் பத்திரிகை OK

இயக்கப்படும் போது, ​​சரம் விருப்பம் வெளிப்படையானது உருவாக்கப்பட்ட ஒவ்வொரு புதிய தொகுதியின் தொடக்கத்திலும் தானாகவே செருகப்படும்.

மாறிகள் மற்றும் மாறிலிகளின் நோக்கம்

அறிவிக்கப்பட்ட ஒவ்வொரு மாறி அல்லது மாறிலிக்கும் அதன் சொந்த வரையறுக்கப்பட்ட நோக்கம் உள்ளது, அதாவது இந்த மாறி இருக்கும் நிரலின் வரையறுக்கப்பட்ட பகுதி. நோக்கம் மாறி அல்லது மாறிலியின் அறிவிப்பு எங்கு செய்யப்பட்டது என்பதைப் பொறுத்தது. உதாரணமாக, மாறியை எடுத்துக் கொள்ளுங்கள் sVAT_Rate, இது செயல்பாட்டில் பயன்படுத்தப்படுகிறது மொத்த செலவு. பின்வரும் அட்டவணை மாறி ஸ்கோப்பிங்கிற்கான இரண்டு விருப்பங்களைப் பற்றி விவாதிக்கிறது sVAT_Rateதொகுதியில் இரண்டு வெவ்வேறு நிலைகளில் அறிவிக்கப்பட்டது:

விருப்பம் வெளிப்படையான மங்கலான sVAT_Rate ஒற்றை செயல்பாடாக மொத்த_செலவு() இருமடங்கு ... இறுதி செயல்பாடு
மாறி என்றால் sVAT_Rate தொகுதியின் ஆரம்பத்திலேயே அறிவிக்கப்பட்டது, பின்னர் இந்த மாறியின் நோக்கம் முழு தொகுதியாக இருக்கும் (அதாவது மாறி sVAT_Rate இந்த தொகுதியில் உள்ள அனைத்து நடைமுறைகளாலும் அங்கீகரிக்கப்படும்).

எனவே, செயல்பாட்டில் இருந்தால் மொத்த செலவு மாறி sVAT_Rate சில மதிப்பு ஒதுக்கப்படும், பின்னர் அதே தொகுதிக்குள் செயல்படுத்தப்படும் அடுத்த செயல்பாடு மாறியைப் பயன்படுத்தும் sVAT_Rate அதே அர்த்தத்துடன்.

இருப்பினும், மற்றொரு தொகுதியில் அமைந்துள்ள சில செயல்பாடுகள் அழைக்கப்பட்டால், அதற்கு மாறி sVAT_Rate தெரிய மாட்டாது.

விருப்பம் வெளிப்படையான செயல்பாடு Total_Cost() இரட்டை மங்கலாக sVAT_ரேட் ஒற்றை ... இறுதி செயல்பாடு
மாறி என்றால் sVAT_Rate விழாவின் தொடக்கத்தில் அறிவிக்கப்பட்டது மொத்த செலவு, அதன் நோக்கம் இந்தச் செயல்பாட்டிற்கு மட்டுமே வரையறுக்கப்படும் (அதாவது செயல்பாட்டிற்குள் மொத்த செலவு, நீங்கள் மாறியைப் பயன்படுத்தலாம் sVAT_Rate, ஆனால் வெளியில் இல்லை).

பயன்படுத்த முயற்சிக்கும் போது sVAT_Rate மற்றொரு நடைமுறையில், VBA கம்பைலர் ஒரு பிழையைப் புகாரளிக்கும், ஏனெனில் இந்த மாறி செயல்பாட்டிற்கு வெளியே அறிவிக்கப்படவில்லை மொத்த செலவு (ஆபரேட்டர் பயன்படுத்தப்பட்டால் விருப்பம் வெளிப்படையானது).

மேலே காட்டப்பட்டுள்ள எடுத்துக்காட்டில், மாறியானது தொகுதி மட்டத்தில் முக்கிய சொல்லுடன் அறிவிக்கப்படுகிறது மங்கலாக்கவா. இருப்பினும், அறிவிக்கப்பட்ட மாறிகள் மற்ற தொகுதிகளில் பயன்படுத்தப்படலாம். இதுபோன்ற சந்தர்ப்பங்களில், ஒரு முக்கிய சொல்லுக்கு பதிலாக ஒரு மாறியை அறிவிக்க மங்கலாக்கவா முக்கிய வார்த்தை பயன்படுத்த வேண்டும் பொது.

மூலம், முக்கிய வார்த்தைக்கு பதிலாக தொகுதி அளவில் ஒரு மாறியை அறிவிக்கும் பொருட்டு மங்கலாக்கவா முக்கிய வார்த்தை பயன்படுத்த முடியும் தனியார், இந்த மாறி தற்போதைய தொகுதியில் மட்டுமே பயன்படுத்தப்படுவதைக் குறிக்கிறது.

மாறிலிகளை அறிவிக்க நீங்கள் முக்கிய வார்த்தைகளையும் பயன்படுத்தலாம். பொது и தனியார், ஆனால் முக்கிய சொல்லுக்கு பதிலாக இல்லை கான்ஸ்ட், அதனுடன்.

பின்வரும் எடுத்துக்காட்டுகள் முக்கிய வார்த்தைகளின் பயன்பாட்டைக் காட்டுகின்றன பொது и தனியார் மாறிகள் மற்றும் மாறிலிகளுக்குப் பயன்படுத்தப்படுகிறது.

விருப்பம் வெளிப்படையான பொது sVAT_Rate ஒற்றை பொது கான்ஸ்ட் iMax_Count = 5000 ...    
இந்த எடுத்துக்காட்டில், முக்கிய சொல் பொது ஒரு மாறியை அறிவிக்கப் பயன்படுகிறது sVAT_Rate மற்றும் மாறிலிகள் iMax_count. இந்த வழியில் அறிவிக்கப்பட்ட கூறுகளின் நோக்கம் முழு தற்போதைய திட்டமாக இருக்கும்.

இதற்கு அர்த்தம் அதுதான் sVAT_Rate и iMax_count எந்த திட்ட தொகுதியிலும் கிடைக்கும்.

விருப்பம் வெளிப்படையான தனியார் sVAT_Rate ஒற்றை தனியார் கான்ஸ்ட் iMax_Count = 5000 ...    
இந்த எடுத்துக்காட்டில், ஒரு மாறியை அறிவிக்க sVAT_Rate மற்றும் மாறிலிகள் iMax_count முக்கிய வார்த்தை பயன்படுத்தப்பட்டது தனியார். இந்த உறுப்புகளின் நோக்கம் தற்போதைய தொகுதி ஆகும்.

இதற்கு அர்த்தம் அதுதான் sVAT_Rate и iMax_count தற்போதைய தொகுதியின் அனைத்து நடைமுறைகளிலும் கிடைக்கும், ஆனால் மற்ற தொகுதிகளில் உள்ள நடைமுறைகளுக்கு கிடைக்காது.

ஒரு பதில் விடவும்