VBA ఆన్ ఎర్రర్ స్టేట్మెంట్స్ | లోపాలను నిర్వహించడానికి టాప్ 3 మార్గాలు

ఎక్సెల్ VBA ఆన్ ఎర్రర్ స్టేట్మెంట్

VBA ఆన్ లోపం స్టేట్మెంట్ అనేది ఒక రకమైన ఎర్రర్ హ్యాండ్లింగ్ మెకానిజం, ఇది ఏ రకమైన లోపం ఎదురైతే ఏమి చేయాలో కోడ్కు మార్గనిర్దేశం చేయడానికి ఉపయోగించబడుతుంది, సాధారణంగా ఒక కోడ్ లోపాన్ని ఎదుర్కొన్నప్పుడు అమలు ఆగిపోతుంది, కానీ కోడ్‌లోని ఈ స్టేట్‌మెంట్‌తో కోడ్ అమలు కొనసాగుతుంది ఇది లోపం ఎదురైనప్పుడు చేయవలసిన సూచనల సమితిని కలిగి ఉంది.

కోడ్‌లోని లోపాన్ని ating హించడం మిమ్మల్ని VBA కోడింగ్‌లో ప్రో చేస్తుంది. మీ కోడ్ గురించి మీకు నమ్మకం ఉన్నప్పటికీ, మీరు కోడ్‌ను 100% సమర్థవంతంగా చేయలేరు, అది లోపం కలిగించవచ్చు.

ప్రతి రకమైన లోపాన్ని గుర్తించడం మరియు నిర్వహించడం దాదాపు అసాధ్యమైన పని, కాని VBA లో లోపాన్ని నిర్వహించడానికి మాకు వివిధ మార్గాలు ఉన్నాయి. కోడ్ వ్రాసేటప్పుడు మీరు దోష కోడ్ రకాన్ని can హించలేరు, కానీ ఏదైనా లోపం వస్తే మీరు కోడ్ రాయడం కంటే డీబగ్గింగ్‌లో ఎక్కువ సమయం గడుపుతారు.

లోపం అంటే ఏమిటి?

లోపం ఏమీ కాదు కాని కార్యాచరణ లేదా తప్పు కోడ్ కారణంగా కోడ్ యొక్క పంక్తిని అమలు చేయలేము. కాబట్టి లోపాన్ని and హించి దాన్ని నిర్వహించడానికి ప్రయత్నించండి.

ఉదాహరణకు, మీరు లేని షీట్‌ను తొలగించడానికి ప్రయత్నిస్తే, ఆ కోడ్ యొక్క పంక్తిని మేము అమలు చేయలేము.

లోపం మూడు రకాలు, ఒకటి అప్రకటిత వేరియబుల్స్ కారణంగా సంకలనం చేయబడిన లోపం. రెండవది కోడర్ యొక్క తప్పు ఎంట్రీల కారణంగా డేటా ఎంట్రీ లోపం, మరియు మూడవది VBA కారణంగా రన్ టైమ్ లోపం కోడ్ యొక్క పంక్తిని గుర్తించలేదు. వర్క్‌షీట్ లేదా వర్క్‌బుక్‌లో లేని లేదా యాక్సెస్ చేయడానికి ప్రయత్నించినందుకు.

కానీ ఈ రకమైన లోపాలను నిర్వహించడానికి మాకు VBA లో ఒక స్టేట్మెంట్ ఉంది, అనగా “ఆన్ ఎర్రర్” స్టేట్మెంట్.

ఆన్ ఆన్ ఎర్రర్ స్టేట్మెంట్స్ రకాలు

VBA లో లోపాలను నిర్వహించడానికి ముఖ్య విషయం “ఆన్ ఎర్రర్” స్టేట్మెంట్. ఉదాహరణకు లోపం “తదుపరి పంక్తిని తిరిగి ప్రారంభించండి”, “మరొక పంక్తికి వెళ్లండి లేదా వెళ్లండి”, మొదలైనవి…

ఆన్ ఎర్రర్ స్టేట్‌మెంట్‌కు మూడు రకాల స్టేట్‌మెంట్‌లు ఉన్నాయి.

  1. గోటో 0రన్ టైమ్ లోపం ఎక్సెల్ జరిగినప్పుడు లేదా VBA దోష సందేశ పెట్టెను ప్రదర్శించవలసి ఉంటుంది. VBA కోడ్‌ను అమలు చేసిన వెంటనే, కోడ్‌లోని నిర్దిష్ట బ్లాక్‌లోని అన్ని లోపం హ్యాండ్లర్‌లను ఇది నిలిపివేస్తుంది.
  2. తదుపరి పున ume ప్రారంభం లోపం సంభవించినప్పుడల్లా ఈ ప్రకటన ఆ లోపాన్ని విస్మరించి, దోష సందేశాలను ప్రదర్శించకుండా తదుపరి పంక్తి కోడ్‌కు (తదుపరి పున ume ప్రారంభం) ఎక్సెల్కు నిర్దేశిస్తుంది. ఇది లోపాన్ని పరిష్కరిస్తుందని కాదు, అది లోపాన్ని విస్మరిస్తుంది.
  3. GoTo [లేబుల్] VBA లోపం ఎదుర్కొన్నప్పుడల్లా కేటాయించిన లేబుల్‌కు వెళ్లండి. ఇది కోడర్ అందించిన నిర్దిష్ట పంక్తికి కోడ్ జంప్ చేస్తుంది.

VBA లో లోపాలను నిర్వహించడానికి టాప్ 3 మార్గాలు

మీరు ఈ VBA ఆన్ ఎర్రర్ మూసను ఇక్కడ డౌన్‌లోడ్ చేసుకోవచ్చు - VBA ఆన్ ఎర్రర్ మూస

# 1 - లోపం పున ume ప్రారంభం తరువాత

మీరు 20 విలువను 0 ద్వారా విభజిస్తున్నారని అనుకోండి మరియు విభజన ఫలితాన్ని దానికి కేటాయించడానికి మీరు వేరియబుల్‌ను ప్రకటించారు.

కోడ్:

 ఉప OnError_Example1 () Dim i As Integer i = 20/0 End Sub 

మీరు ఈ కోడ్‌ను అమలు చేస్తే అది క్రింది లోపాన్ని విసిరివేస్తుంది.

కాబట్టి మీరు ఏ సంఖ్యను సున్నా విలువ ద్వారా విభజించలేరు. రన్ టైమ్ ఎర్రర్ నంబర్ 11 అనగా జీరో ద్వారా డివిజన్.

ఇప్పుడు నేను కోడ్‌కు మరో పంక్తిని జోడిస్తాను.

కోడ్:

 ఉప OnError_Example1 () Dim i as Integer, j As Integer i = 20/0 j = 20/2 End Sub 

ఇప్పుడు నేను పైభాగంలో తదుపరి లోపం పున ume ప్రారంభం.

కోడ్:

 Sub OnError_Example1 () Dim i as Integer, j as Integer on Error Resume Next i = 20/0 j = 20/2 ఎండ్ సబ్ 

ఇప్పుడు నేను ఈ కోడ్‌ను ఎగ్జిక్యూట్ చేస్తే అది నాకు ఎటువంటి దోష సందేశాలను ఇవ్వదు, అది తదుపరి కోడ్ కోడ్‌ను అమలు చేస్తుంది, అనగా j = 20/2.

# 2 - లోపం GoTo లేబుల్‌లో

నేను మూడు వేరియబుల్స్ డిక్లేర్ చేసాను.

కోడ్:

 ఉప OnError_Example1 () Dim i as Integer, j as Integer, k as Integer 

ఈ మూడు వేరియబుల్స్ కోసం నేను డివిజన్ లెక్కింపును కేటాయిస్తాను.

కోడ్:

 ఉప OnError_Example1 () Dim i as Integer, j as Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

ఈ మూడు లెక్కల ఫలితం సందేశ పెట్టెలో చూపబడుతుంది.

కోడ్:

 ఉప OnError_Example1 () Dim i as Integer, j as Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "i యొక్క విలువ" & i & vbNewLine & "j యొక్క విలువ "& j & _ vbNewLine &" k యొక్క విలువ "& k & vbNewLine End Sub 

ఇప్పుడు నేను ఈ కోడ్‌ను అమలు చేయడానికి ప్రయత్నిస్తాను ఎందుకంటే “నేను” లెక్కింపు సరైనది కాదు కాబట్టి మనకు రన్ టైమ్ ఎర్రర్ 11 వస్తుంది.

ఇప్పుడు నేను “ఆన్ ఎర్రర్ రెస్యూమ్ నెక్స్ట్” స్టేట్‌మెంట్‌ను జోడిస్తాను.

కోడ్:

 ఉప OnError_Example1 () మసకబారిన నేను పూర్ణాంకంగా, j పూర్ణాంకంగా, k పూర్ణాంకంలో లోపం పున ume ప్రారంభం తరువాత i = 20/0 j = 20/2 k = 10/5 MsgBox "i యొక్క విలువ" & i & vbNewLine & " j యొక్క విలువ "& j & _ vbNewLine &" k యొక్క విలువ "& k & vbNewLine End Sub 

నేను దీన్ని అమలు చేస్తే అది “I” గణనను దాటవేసి మిగిలిన రెండు గణనలను అమలు చేస్తుంది మరియు ఫలితం క్రింది విధంగా ఉంటుంది.

ఇప్పుడు “ఆన్ ఎర్రర్ రెస్యూమ్ నెక్స్ట్” కు బదులుగా నేను “ఆన్ ఎర్రర్ గోటో కె కాలిక్యులేషన్” ని జోడిస్తాను

కోడ్:

 ఉప OnError_Example1 () మసకబారినట్లుగా, j పూర్ణాంకంగా, k పూర్ణాంకంలో లోపం GoTo KCalculation: i = 20/0 j = 20/2 KCalculation: k = 10/5 MsgBox "i యొక్క విలువ" & i & vbNewLine & "J యొక్క విలువ" & j & _ vbNewLine & "k యొక్క విలువ" & k & vbNewLine End Sub 

గమనిక: ఇక్కడ “KCalculation” నేను ఇచ్చిన లేబుల్ పేరు, మీరు ఖాళీ లేకుండా మీ స్వంత లేబుల్ పేరును ఇవ్వవచ్చు.

ఇప్పుడు నేను ఈ కోడ్ పంక్తిని అమలు చేస్తే అది తదుపరి పంక్తికి వెళ్లదు, అది నేను ఎంటర్ చేసిన లేబుల్ పేరుకు చేరుకుంటుంది, అనగా “KCalcualtion”. ఇక్కడ ఇది “నేను” ఇచ్చిన లోపాన్ని విస్మరిస్తుంది మరియు అది “j” గణనను అమలు చేయదు కాని వెంటనే అది “KCalcualtion” కి దూకుతుంది.

# 3 - VBA లో ప్రింట్ లోపం సంఖ్య

కోడ్ చివరలో, మేము ప్రత్యేక సందేశ పెట్టెలో లోపం సంఖ్యను కూడా ముద్రించవచ్చు. ఈ క్రింది కోడ్ కోడ్ ఈ పనిని చేస్తుంది.

కోడ్:

Err.Number

ఇప్పుడు నేను ఈ కోడ్‌ను నడుపుతాను మొదటి సందేశ పెట్టె గణన ఫలితాలను చూపుతుంది.

సరేపై క్లిక్ చేయండి, ఇది లోపం సంఖ్యను చూపించడానికి మరో సందేశ పెట్టెను చూపుతుంది.

మేము ఫలితంగా 11 కి వెళ్తాము, అనగా జీరో ద్వారా విభజన.

మేము సంఖ్యకు బదులుగా లోపం వివరణను కూడా పొందవచ్చు. మేము కోడ్ను మార్చాలి, క్రింద కోడ్ ఉంది.

కోడ్:

లోపం. వివరణ

ఇది ఇలాంటి వివరణను చూపుతుంది.

గుర్తుంచుకోవలసిన విషయాలు

  • కోడ్ చివరిలో “ఆన్ ఎర్రర్ రెస్యూమ్ నెక్స్ట్” ఎంటర్ చేసిన తర్వాత “ఆన్ ఎర్రర్ గోటో 0” స్టేట్‌మెంట్‌ను జోడించడం మర్చిపోవద్దు.
  • లేబుల్ పేరు రెండు ప్రదేశాలలో ఒకే విధంగా ఉండాలి.
  • లేబుల్ పేర్లను ముందుగానే నిర్వచించాల్సిన అవసరం లేదు.
  • చివరికి, ప్రత్యేక సందేశ పెట్టె ద్వారా లోపం ఏమిటో ఎల్లప్పుడూ చూడండి.