VBA సబ్స్క్రిప్ట్ అవుట్ ఆఫ్ రేంజ్ (రన్-టైమ్ ఎర్రర్ '9') | ఈ లోపం ఎందుకు సంభవించింది?
ఎక్సెల్ VBA సబ్స్క్రిప్ట్ పరిధిలో లేదు
ఒక కోడ్లో లేని ఏదో లేదా వేరియబుల్ను సూచించడానికి ప్రయత్నించినప్పుడు VBA లో మనకు ఎదురయ్యే లోపం సబ్స్క్రిప్ట్, ఉదాహరణకు, మనకు x అనే వేరియబుల్ లేదని అనుకుందాం, కాని మనం x లో msgbox ఫంక్షన్ను ఉపయోగిస్తాము పరిధి లోపం నుండి సబ్స్క్రిప్ట్ను ఎదుర్కొంటుంది.
VBA సబ్స్క్రిప్ట్ పరిధి లోపం నుండి సంభవిస్తుంది ఎందుకంటే మేము యాక్సెస్ చేయడానికి ప్రయత్నిస్తున్న వస్తువు ఉనికిలో లేదు. ఇది VBA కోడింగ్లో లోపం రకం మరియు ఇది “రన్ టైమ్ ఎర్రర్ 9”. సమర్థవంతమైన కోడ్ను వ్రాయడానికి భావనలను అర్థం చేసుకోవడం చాలా ముఖ్యం మరియు కోడ్ను సమర్థవంతంగా డీబగ్ చేయడానికి మీ VBA కోడ్ యొక్క లోపాన్ని అర్థం చేసుకోవడం మరింత ముఖ్యం.
మీ కోడింగ్ లోపం మరియు మీరు పోయినప్పుడు ఆ లోపం ఏమిటో మీకు తెలియకపోతే.
వ్యాధి ఏమిటో తెలియకుండా ఒక వైద్యుడు తన రోగికి give షధం ఇవ్వలేడు. ఖచ్చితంగా వైద్యులు మరియు రోగులకు, ఇద్దరికీ ఒక వ్యాధి (లోపం) ఉందని తెలుసు, కాని దానికి medicine షధం ఇవ్వడం కంటే వ్యాధిని (లోపం) అర్థం చేసుకోవడం చాలా ముఖ్యం. మీరు లోపాన్ని సంపూర్ణంగా అర్థం చేసుకోగలిగితే, అప్పుడు పరిష్కారం కనుగొనడం చాలా సులభం.
ఈ వ్యాసంలో ఇదే విధమైన గమనికలో, మనం సాధారణంగా క్రమబద్ధతను ఎదుర్కొనే ముఖ్యమైన లోపాలలో ఒకదాన్ని చూస్తాము, అనగా ఎక్సెల్ VBA లో “సబ్స్క్రిప్ట్ అవుట్ ఆఫ్ రేంజ్” లోపం.
ఎక్సెల్ VBA లో రేంజ్ లోపం నుండి సబ్స్క్రిప్ట్ ఏమిటి?
ఉదాహరణకు, మీరు వర్క్బుక్ లేని షీట్ను సూచిస్తుంటే మాకు లభిస్తుంది రన్ టైమ్ ఎర్రర్ 9: “సబ్స్క్రిప్ట్ అవుట్ ఆఫ్ రేంజ్”.
మీరు ఎండ్ బటన్పై క్లిక్ చేస్తే అది ఉపప్రాంతం ముగుస్తుంది, మీరు డీబగ్పై క్లిక్ చేస్తే అది మిమ్మల్ని లోపం ఎదుర్కొన్న కోడ్ రేఖకు తీసుకెళుతుంది మరియు సహాయం మిమ్మల్ని మైక్రోసాఫ్ట్ వెబ్సైట్ పేజీకి తీసుకెళుతుంది.
శ్రేణి లోపం నుండి సబ్స్క్రిప్ట్ ఎందుకు సంభవించింది?
About షధం గురించి ఆలోచించే ముందు మరణించినవారిని కనుగొనడం ముఖ్యమని నేను డాక్టర్గా చెప్పాను. కోడ్ యొక్క పంక్తి మేము నమోదు చేసిన వస్తువును చదవనప్పుడు VBA సబ్స్క్రిప్ట్ పరిధి లోపం.
ఉదాహరణ కోసం క్రింది చిత్రాన్ని చూడండి, నాకు షీట్ 1, షీట్ 2, షీట్ 3 అని మూడు షీట్లు ఉన్నాయి.
ఇప్పుడు కోడ్లో, “సేల్స్” షీట్ను ఎంచుకోవడానికి నేను కోడ్ రాశాను.
కోడ్:
సబ్ మాక్రో 2 () షీట్లు ("సేల్స్"). ఎండ్ సబ్ ఎంచుకోండి
నేను ఈ కోడ్ను F5 కీని ఉపయోగించి లేదా మానవీయంగా నడుపుతుంటే, నేను పొందడం ముగుస్తుంది రన్ టైమ్ ఎర్రర్ 9: “సబ్స్క్రిప్ట్ అవుట్ ఆఫ్ రేంజ్”.
వర్క్బుక్లో లేని వర్క్షీట్ ఆబ్జెక్ట్ “సేల్స్” ను యాక్సెస్ చేయడానికి నేను ప్రయత్నించాను. ఇది రన్ టైమ్ లోపం ఎందుకంటే కోడ్ను నడుపుతున్నప్పుడు ఈ లోపం సంభవించింది.
అక్కడ లేని వర్క్బుక్ను సూచించినప్పుడు మనకు లభించే మరో సాధారణ సబ్స్క్రిప్ట్ లోపం. ఉదాహరణకు ఈ క్రింది కోడ్ను చూడండి.
కోడ్:
సబ్ మాక్రో 1 () డిమ్ డబ్ల్యుబి వర్క్బుక్ సెట్గా Wb = వర్క్బుక్లు ("జీతం షీట్. Xlsx") ఎండ్ సబ్
పైన పేర్కొన్న కోడ్ వేరియబుల్ WB వర్క్బుక్కు సమానంగా ఉండాలి “జీతం షీట్. Xlsx”. ప్రస్తుతానికి, ఈ వర్క్బుక్ నా కంప్యూటర్లో తెరవబడలేదు. నేను ఈ కోడ్ను మాన్యువల్గా లేదా ఎఫ్ 5 కీ ద్వారా అమలు చేస్తే, నేను పొందుతాను రన్ టైమ్ ఎర్రర్ 9: “సబ్స్క్రిప్ట్ అవుట్ ఆఫ్ రేంజ్”.
దీనికి కారణం నేను ప్రస్తావిస్తున్న వర్క్బుక్, ఇది ఇప్పటి వరకు తెరవబడలేదు లేదా ఉనికిలో లేదు.
శ్రేణులలో VBA సబ్స్క్రిప్ట్ లోపం
మీరు శ్రేణిని డైనమిక్ అర్రేగా ప్రకటించినప్పుడు మరియు శ్రేణి యొక్క పొడవును నిర్వచించడానికి మీరు VBA లో DIM లేదా REDIM అనే పదాన్ని ఉపయోగించకపోతే, మేము సాధారణంగా VBA సబ్స్క్రిప్ట్ను పరిధి లోపం నుండి పొందుతాము. ఉదాహరణకు, క్రింది కోడ్ను చూడండి.
కోడ్:
సబ్ మాక్రో 3 () డిమ్ మైఅర్రే () లాంగ్ మైఅర్రే (1) = 25 ఎండ్ సబ్
పై వాటిలో, నేను వేరియబుల్ను శ్రేణిగా ప్రకటించాను కాని నేను ప్రారంభ మరియు ముగింపు బిందువులను కేటాయించలేదు, బదులుగా నేను మొదటి శ్రేణికి 25 విలువను కేటాయించాను.
నేను ఈ కోడ్ను F5 కీని ఉపయోగించి లేదా మానవీయంగా నడుపుతుంటే, మనకు లభిస్తుంది రన్ టైమ్ ఎర్రర్ 9: “సబ్స్క్రిప్ట్ అవుట్ ఆఫ్ రేంజ్”.
ఈ సమస్యను పరిష్కరించడానికి నేను Redim పదాన్ని ఉపయోగించడం ద్వారా శ్రేణి యొక్క పొడవును కేటాయించాలి.
కోడ్:
సబ్ మాక్రో 3 () డిమ్ మైఅర్రే () లాంగ్ రెడిమ్ మైఅర్రే (1 నుండి 5) మైఅర్రే (1) = 25 ఎండ్ సబ్
ఈ కోడ్ ఎటువంటి లోపాలను ఇవ్వదు.
VBA కోడ్ చివరిలో లోపాలను ఎలా చూపించాలి?
కోడ్ నడుస్తున్నప్పుడు మరియు నడుస్తున్నప్పుడు మీరు లోపాన్ని చూడకూడదనుకుంటే, చివరికి లోపం జాబితా అవసరమైతే, మీరు “ఆన్ ఎర్రర్ రెస్యూమ్” ఎర్రర్ హ్యాండ్లర్ను ఉపయోగించాలి. క్రింది కోడ్ చూడండి.
కోడ్:
సబ్ మాక్రో 1 () డిమ్ డబ్ల్యుబి వర్క్బుక్గా లోపం పున ume ప్రారంభించండి తదుపరి సెట్ Wb = వర్క్బుక్లు ("జీతం షీట్. Xlsx") MsgBox Err.Description End Sub
మేము చూసినట్లుగా ఈ కోడ్ విసిరివేయబడుతుంది రన్ టైమ్ ఎర్రర్ 9: “సబ్స్క్రిప్ట్ రేంజ్లో లేదు ఎక్సెల్ VBA లో. నేను ఎర్రర్ హ్యాండ్లర్ ఆన్ ఎర్రర్ రెస్యూమ్ నెక్స్ట్ ను VBA లో కోడ్ నడుపుతున్నప్పుడు మనకు ఎటువంటి దోష సందేశాలు రావు, ఎండ్ మెసేజ్ బాక్స్ వద్ద నాకు ఇలాంటి దోష వివరణ చూపిస్తుంది.
మీరు ఎక్సెల్ VBA సబ్స్క్రిప్ట్ అవుట్ ఆఫ్ రేంజ్ మూసను ఇక్కడ డౌన్లోడ్ చేసుకోవచ్చు: - VBA సబ్స్క్రిప్ట్ అవుట్ ఆఫ్ రేంజ్ మూస