VBA வகை பொருந்தாத பிழை (எடுத்துக்காட்டுகள்) | இயக்க நேர பிழை 13 ஐ எவ்வாறு சரிசெய்வது?
பொருந்தாத பிழையைத் தட்டச்சு செய்க அல்லது பிழைக் குறியீடு 13 என்றும் அழைக்கலாம், அதன் தரவு வகை இல்லாத ஒரு மாறிக்கு ஒரு மதிப்பை நாம் ஒதுக்கும்போது இது நிகழ்கிறது, எடுத்துக்காட்டாக, ஒரு முழு தரவு வகை மாறிக்கு ஒரு தசம அல்லது நீண்ட மதிப்பை வழங்கினால், பிழைக் குறியீடு 13 எனக் காட்டப்படும் குறியீட்டை இயக்கும்போது இந்த வகை பொருந்தாத பிழையை எதிர்கொள்ளுங்கள்.
VBA வகை பொருந்தாத பிழை என்றால் என்ன?
எக்செல் இல் விபிஏ வகை பொருந்தாத பிழை ஒரு வகை “ரன் டைம் பிழை” மற்றும் இது இந்த வகையில் 13 வது பிழை.
VBA இல் உள்ள கற்றல்களைத் தொடங்க மற்றும் ஆரம்பிக்க, VBA குறியீடுகளால் எறியப்பட்ட பிழையைக் கண்டறிவது கடினம். VBA ஒரு பிழையை எறியவில்லை என்பதை நினைவில் கொள்ளுங்கள், மாறாக குறியீட்டை எழுதும் போது இது எங்கள் தவறுகளை முன்னிலைப்படுத்துகிறது.
நாங்கள் வழக்கமாக மாறிகள் அறிவிக்கிறோம், அதற்கு தரவு வகைகளை ஒதுக்குகிறோம். அந்த மாறிகளுக்கு ஒரு மதிப்பை நாம் ஒதுக்கும்போது, அது எந்த வகையான தரவை வைத்திருக்க முடியும் என்பதை நினைவில் கொள்ள வேண்டும், ஒதுக்கப்பட்ட மதிப்பு தரவு வகைக்கு ஏற்ப இல்லையென்றால் “ரன் டைம் பிழை 13: பொருந்தாத வகை” கிடைக்கும்.
VBA வகை பொருந்தாத ரன்-டைம் பிழை 13 ஐ எவ்வாறு சரிசெய்வது?
இந்த VBA வகை பொருந்தாத பிழையைப் புரிந்துகொள்ள சில எடுத்துக்காட்டுகளைப் பார்ப்போம்.
இந்த VBA வகை பொருந்தாத எக்செல் வார்ப்புருவை இங்கே பதிவிறக்கம் செய்யலாம் - VBA வகை பொருந்தாத எக்செல் வார்ப்புருVBA வகை பொருந்தவில்லை - எடுத்துக்காட்டு # 1
எடுத்துக்காட்டாக, கீழே உள்ள VBA குறியீட்டைப் பாருங்கள்.
குறியீடு:
துணை வகை_மிஸ்மாட்ச்_எக்சாம்பிள் 1 () மங்கலான கே பைட்டாக k = "ஹாய்" MsgBox k முடிவு துணை
மாறி “k” ஐ பைட் என அறிவித்துள்ளேன்.
இதன் பொருள் “k” மாறி 0 முதல் 255 வரை மதிப்புகளைக் கொண்டிருக்க முடியும். ஆனால் அடுத்த வரியில், “k” என்ற மாறிக்கான மதிப்பை “Hiii” என ஒதுக்கியுள்ளேன்.
தரவு வகை ஒரு உரையின் மதிப்பை வைத்திருக்க முடியாது என்பது மிகவும் தெளிவாக உள்ளது, எனவே இங்கே வகை பொருந்தாத பிழை வருகிறது.
VBA வகை பொருந்தவில்லை - எடுத்துக்காட்டு # 2
இப்போது வேறு ஒரு தரவு வகையுடன் இன்னும் ஒரு உதாரணத்தைப் பாருங்கள். கீழே உள்ள குறியீட்டைப் பாருங்கள்.
குறியீடு:
துணை வகை_மிஸ்மாட்ச்_எக்சாம்பிள் 2 () மங்கலான x பூலியன் x = 4556 MsgBox x எண்ட் சப்
மாறி “x” ஐ பூலியன் என அறிவித்துள்ளோம்.
பூலியன் என்பது உண்மை அல்லது பொய்யின் மதிப்பைக் கொண்டிருக்கும் ஒரு தரவு வகை.
மேலே உள்ள குறியீட்டில், நாங்கள் 4556 மதிப்பை ஒதுக்கியுள்ளோம், இது உண்மை அல்லது பொய்யின் தரவு வகை மதிப்புகளின்படி இல்லை.
இந்த குறியீட்டை நாங்கள் இயக்கும்போது, ஒரு வகை பொருந்தாத பிழையை நீங்கள் எதிர்பார்க்கலாம், ஆனால் இந்த குறியீட்டை இயக்கும்போது என்ன நடக்கும் என்று பாருங்கள்.
வகை பொருந்தாத பிழையின் 13 ரன் நேர பிழையை இது ஏன் கொடுக்கவில்லை என்று நீங்கள் யோசிக்க வேண்டும்.
இதற்கு காரணம் எக்செல் பூஜ்ஜியத்தைத் தவிர அனைத்து எண்களையும் உண்மை என்று கருதுகிறது. பூஜ்ஜிய மதிப்பு FALSE ஆக கருதப்படும். அதனால்தான் ஒரு பிழைக்கு பதிலாக உண்மை என முடிவு கிடைத்தது.
இப்போது நான் உரையுடன் ஒரு எண் மதிப்பை ஒதுக்குவேன் என்று பாருங்கள்.
குறியீடு:
துணை வகை_மிஸ்மாட்ச்_எக்சாம்பிள் 2 () மங்கலான x பூலியன் x = "4556 அ" MsgBox x எண்ட் சப்
இது நிச்சயமாக ரன் டைம் பிழை 13: வகை பொருத்தமின்மை.
VBA வகை பொருந்தவில்லை - எடுத்துக்காட்டு # 3
இப்போது, இந்த எடுத்துக்காட்டுக்கு கீழே உள்ள குறியீட்டைப் பாருங்கள்.
குறியீடு:
துணை வகை_மிஸ்மாட்ச்_எக்சாம்பிள் 4 () மங்கலான x ஆக முழு எண் மங்கலான y சரம் x = 45 y = "2019 ஜன" MsgBox x + y முடிவு துணை
மாறி “x” என்பது ஒரு முழு தரவு வகை மற்றும் “y” என்பது ஒரு சரம் தரவு வகை.
எக்ஸ் = 45 மற்றும் ஒய் = 2019 ஜன.
செய்தி பெட்டியில், நான் x + y ஐ சேர்த்துள்ளேன்.
ஆனால் இது சரியான குறியீடு அல்ல, ஏனெனில் சரம் உரைகளுடன் எண்களை சேர்க்க முடியாது. ரன் டைம் பிழை 13 ஐ எதிர்கொள்வோம்.
VBA வகை பொருந்தவில்லை - எடுத்துக்காட்டு # 4
விதிவிலக்கான வழக்குகள்
மாறி தரவு வகைக்கு ஒதுக்கப்பட்ட தவறான தரவை எக்செல் மன்னிக்கும் சூழ்நிலைகள் உள்ளன. உதாரணமாக கீழே உள்ள குறியீட்டைப் பாருங்கள்.
குறியீடு:
துணை வகை_மிஸ்மாட்ச்_எக்சாம்பிள் 3 () மங்கலான x நீளமான மங்கலான y நீளமாக x = 58.85 y = "85" MsgBox x & vbNewLine & y End Sub
அறிவிக்கப்பட்ட இரண்டு மாறிகள் “x” & “y”.
இந்த மாறிக்கு, ஒதுக்கப்பட்ட தரவு வகை “நீண்டது”.
நீண்ட தரவு வகை தசம மதிப்புகள் அல்ல முழு எண்களை மட்டுமே ஏற்றுக்கொள்கிறது.
எனவே வகை பொருந்தாத பிழையின் 13 ரன் நேரப் பிழையைப் பெறுவதே பொதுவான கருத்து.
ஆனால் இந்த குறியீட்டை இயக்கும்போது என்ன நடக்கும் என்று பார்ப்போம்.
ஆஹா !!! 59 & 85 என மதிப்புகளைப் பெற்றோம்.
ஏனென்றால், VBA தசம மதிப்பை 58.85 ஐ அருகிலுள்ள முழு மதிப்பாக மாற்றும், மேலும் எண்கள் இரட்டை மேற்கோள்களுடன் இணைக்கப்பட்டிருந்தாலும், அது முழு எண் மதிப்புக்கு மட்டுமே மாறுகிறது.