අන්තර්ගත වගුව
ඔබ දැනටමත් UDF නිර්මාණය කරන්නේ කෙසේදැයි දන්නා පරිදි (සහ, ඔබ ඒවා ඔබගේ Excel හි යෙදීමටද උත්සාහ කර ඇති බව මම බලාපොරොත්තු වෙමි), අපි ටිකක් ගැඹුරට හාරා ඔබේ පරිශීලක අර්ථ දක්වා ඇති කාර්යය ක්රියා නොකරන්නේ නම් කුමක් කළ යුතු දැයි බලමු.
අභිරුචි ශ්රිතයක් නිර්මාණය කිරීමේදී සමහර ගැටළු විසඳීම සඳහා, ඔබට බොහෝ විට නිදොස්කරණයක් ධාවනය කිරීමට අවශ්ය වනු ඇත. එවිට ඔබට ශ්රිතය නිවැරදිව ක්රියාත්මක වන බවට සහතික විය හැක.
අපි පහත දෝශ නිරාකරණ ක්රම ගවේෂණය කරන්නෙමු:
ඔබ අභිරුචි ශ්රිතයක් සාදන විට, සෑම විටම හැකියාවක් ඇත. ඔයාට වැරදීමක් වෙයි කියලා. අභිරුචි කාර්යයන් සාමාන්යයෙන් තරමක් සංකීර්ණ වේ. තවද ඔවුන් සෑම විටම නිවැරදිව වැඩ කිරීමට පටන් නොගනී. සූත්රය වැරදි ප්රතිඵලයක් හෝ #VALUE ලබා දිය හැක! දෝෂය. සම්මත Excel ශ්රිත මෙන් නොව, ඔබට වෙනත් කිසිදු පණිවිඩයක් නොපෙනේ.
එහි එක් එක් ප්රකාශය ක්රියා කරන ආකාරය පරීක්ෂා කිරීමට පියවරෙන් පියවර අභිරුචි ශ්රිතයක් හරහා යාමට ක්රමයක් තිබේද? සහතිකයි! දෝශ නිරාකරණය මේ සඳහා භාවිතා කරයි.
ඔබට වැඩ කරන එක තෝරාගත හැකි පරිදි ඔබේ අභිරුචි ශ්රිතය නිදොස් කිරීමට මම ඔබට ක්රම කිහිපයක් ඉදිරිපත් කරමි.
උදාහරණයක් ලෙස, අපි අභිරුචි ශ්රිතය භාවිතා කරමු. GetMaxBetween නිශ්චිත අගයන් පරාසයේ උපරිම සංඛ්යාව ගණනය කරන අපගේ පෙර ලිපි වලින් එකකින්:
ශ්රිතය GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange as Range Dim vMax Dim arrNums() Dim i rngCells හි එක් එක් සංඛ්යා පරාසය සඳහා නිඛිල ReDim arrNums(rngCells.Count) ලෙස vMax =NumRange Case තෝරන්න vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End ඊළඟට තෝරන්න NumRange GetMaxBetween = WorksheetFunction.Max (arrNum යනු Functions යනු Functions වේ. සංඛ්යා ලියා ඇති කොටු පරාසය, මෙන්ම අගයන්හි ඉහළ සහ පහළ සීමාව.වැදගත් ස්ථානවල MsgBox ශ්රිතය තබන්න
ගණනය කිරීම් ක්රියාත්මක කිරීම නිරීක්ෂණය කිරීම සඳහා, ඔබට ප්රදර්ශනය කළ හැක නිවැරදි ස්ථානවල තිරයේ ඇති වැදගත්ම විචල්යවල අගයන්. මෙය pop-up dialog boxes භාවිතයෙන් කළ හැක.
MsgBox යනු පරිශීලකයාට යම් ආකාරයක පණිවිඩයක් පෙන්වීමට භාවිතා කළ හැකි සංවාද කොටුවකි.
MsgBox හි වාක්ය ඛණ්ඩය අනෙකුත් VBA ශ්රිතවලට සමාන වේ:
MsgBox(prompt [, buttons] [, title] [, helpfile, සන්දර්භය])prompt යනු අවශ්ය තර්කයකි. සංවාද කොටුවේ ඔබ දකින පණිවිඩය එහි අඩංගු වේ. එය තනි විචල්යවල අගයන් සංදර්ශන කිරීමට ද භාවිතා කළ හැක.
අනෙකුත් සියලුම තර්ක විකල්ප වේ.
[ බොත්තම් ] - කුමන බොත්තම් සහ අයිකනද යන්න තීරණය කරයි MsgBox හි දර්ශනය වේ. උදාහරණයක් ලෙස, අපි vbOkOnly විකල්පය භාවිතා කරන්නේ නම්, OK බොත්තම පමණක් දර්ශනය වේ. ඔබට මෙම තර්කය මග හැරී ගියද, මෙම බොත්තම පෙරනිමියෙන් භාවිතා වේ.
[ මාතෘකාව ] - මෙහිදී ඔබට පණිවිඩ පෙට්ටියේ මාතෘකාව සඳහන් කළ හැක.
අපි මාරු වෙමු පුහුණු වීමට සහ නිදොස්කරණය ආරම්භ කිරීමට වචන. ප්රදර්ශනය කිරීමටපණිවිඩය, Case Else operator:
MsgBox vMax, "Count -" & iප්රතිඵලයේ අපට ලැබෙන දේ මෙන්න:
ශ්රිතය GetMaxBetween(rngCells Range, MinNum, MaxNum) Dim NumRange ලෙස Dim vMax Dim arrNums() Dim i Integer ReDim arrNums(rngCells.Count) rngCells හි එක් එක් NumRange සඳහා vMax = NumRange Case vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax, "ගණන් -" & i Case Else GetMaxBetween = 0 End තෝරන්න Next NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) අවසන් ශ්රිතයසංවාද කොටුවේ ඇති vMax විචල්යය භාවිතා කරමින්, තේරීම සඳහා වන නිර්ණායක සපුරාලන්නේ කුමන සංඛ්යාදැයි අපි බලමු, එබැවින් අපිට ඒවායින් ලොකුම එක තෝරගන්න පුළුවන් කියලා. "ගණන් -" සහ amp; මා මාතෘකා තීරුවේ, උපරිම අගය තීරණය කිරීම සඳහා අපි දැනටමත් අංක කීයක් තෝරාගෙන ඇත්ද යන්න අපි දක්වන්නෙමු. සෑම නව අගයක් සමඟම කවුන්ටරය වැඩි වනු ඇත.
අපගේ UDF සැකසූ පසු, අපි පහත සූත්රය දින පරාසයට යොදන්නෙමු:
= GetMaxBetween (A1:A6,10,50)
Enter බොත්තමට පසුව එබූ විට, ඔබට පහත තිර පිටුවේ මෙන් පණිවිඩයක් පෙනෙනු ඇත:
මෙය A1: A6 පරාසයේ නිර්ණායක සපුරාලන පළමු අංකයයි: 10ට වඩා වැඩි නමුත් අඩු 50 ට වඩා.
ඔබ හරි ක්ලික් කළ පසු, අංක 14 සමඟ දෙවන පණිවිඩයක් දිස්වේ. ඉතිරි අංක තේරීමට නොගැලපේනිර්ණායක. එම නිසා, ශ්රිතය පිටවී 17 වන අගයන් දෙකෙන් විශාලතම අගය ලබා දෙයි.
MsgBox ශ්රිතය ඔබේ අභිරුචි ශ්රිතයේ වැදගත්ම ස්ථානවල අගයන් පාලනය කිරීමට භාවිතා කළ හැක. තනි විචල්යයන් වෙනස් වේ. ඔබට විශාල කාර්යයක් සහ බොහෝ ගණනය කිරීම් ඇති විට පණිවිඩ පෙට්ටි ඉතා ප්රයෝජනවත් විය හැක. මෙම අවස්ථාවෙහිදී, දෝෂය සිදු වන්නේ කේතයේ කුමන කොටසෙහිද යන්න තීරණය කිරීම ඔබට පහසු වනු ඇත.
නැවතුම් ස්ථාන නිර්ණය කර පියවරෙන් පියවර ක්රියාත්මක කරන්න
ඔබට කේතයට බිඳුම් ලක්ෂ්ය එක් කළ හැක. කේතය ක්රියාත්මක කිරීම නතර වන ඔබගේ කාර්යය. එබැවින් ඔබට ගණනය කිරීමේ ක්රියාවලිය පියවරෙන් පියවර අනුගමනය කළ හැකිය. එසේ කිරීමෙන්, විචල්යවල අගයන් වෙනස් වන ආකාරය ඔබට දැක ගත හැක.
බිඳවුම් ලක්ෂ්යයක් එක් කිරීමට, ඔබ විරාම කිරීමට තෝරන ප්රකාශය අඩංගු රේඛාව මත කර්සරය තබන්න. ඉන්පසු දකුණු-ක්ලික් කර Debug -> බ්රේක්පොයින්ට් ටොගල් කරන්න හෝ F9 ඔබන්න. ඔබට ශ්රිත කේතයේ වම්පස ඇති සිරස් අළු ප්රදේශය මත ඔබට අවශ්ය තැන ක්ලික් කළ හැක.
පහත තිර පිටපතේ ඔබට පෙනෙන පරිදි රතු කවයක් දිස්වනු ඇත. ගණනය කිරීම නවත්වන කේතයේ රේඛාව රතු පැහැයෙන් උද්දීපනය කර ඇත.
දැන්, ශ්රිතය ක්රියාත්මක වන විට VBA සංස්කාරක කවුළුව විවෘත වේ. ඔබ නැවැත්වූ ස්ථානයේ කර්සරය ස්ථානගත වනු ඇත.
ඔබ ඔබේ මූසික කර්සරය ශ්රිත කේතයේ ඇති ඕනෑම විචල්යයක් මත තබා ඇත්නම්, ඔබට ඒවායේ ධාරාව දැකිය හැක.අගය:
ගණනය කරගෙන යාමට F5 ඔබන්න.
සටහන. බිඳවැටීමෙන් පසු, ඔබට පියවරෙන් පියවර ගණනය කිරීම් වල ප්රගතිය නිරීක්ෂණය කිරීම ආරම්භ කළ හැකිය. ඔබ F8 බොත්තම එබුවහොත්, VBA කේතයේ ඊළඟ පේළියක් පමණක් ක්රියාත්මක වේ. ඊතලයක් සහිත කහ ඉර අවසන් වරට ක්රියාත්මක කළ කේත ස්ථානයට ද ගමන් කරයි.
ශ්රිතය ක්රියාත්මක කිරීම නැවත විරාම කර ඇති බැවින්, ඔබට මූසික කර්සරය භාවිතයෙන් ශ්රිතයේ සියලුම විචල්යවල වත්මන් අගයන් නැරඹිය හැකිය.
F8 මීළඟ එබීමෙන් අපව එක් පියවරක් ඉදිරියට ගෙන යනු ඇත. . එබැවින් ඔබට ගණනය කිරීම අවසන් වන තුරු F8 ඔබන්න. නැතහොත් මීළඟ කඩඉම දක්වා ගණනය කිරීම දිගටම කරගෙන යාමට F5 ඔබන්න.
දෝෂයක් සිදුවුවහොත්, කර්සරය දෝෂය සිදු වූ කේතයේ ස්ථානයේ නතර වේ. තවද ඔබට උත්පතන දෝෂ පණිවිඩයක් ද පෙනෙනු ඇත. මෙය ගැටලුවට හේතුව තීරණය කිරීම පහසු කරයි.
ඔබ විසින් සඳහන් කරන ලද කඩඉම් ලකුණු ඔබ ගොනුව වසන තෙක් යොදනු ලැබේ. ඔබ එය නැවත විවෘත කරන විට, ඔබට ඒවා නැවත සැකසීමට අවශ්ය වනු ඇත. වඩාත්ම පහසු ක්රමයක් නොවේ, ඔබ සිතන්නේ නැද්ද?
කෙසේ වෙතත්, මෙම ගැටළුව විසඳිය හැකිය. අවශ්ය ලක්ෂ්යවලදී Stop ප්රකාශයක් ක්රියාකාරී කේතයට ඇතුළු කරන්න, ඔබට බ්රේක්පොයින්ට් භාවිතා කරන ආකාරයටම වැඩසටහන ක්රියාත්මක කිරීම නැවැත්විය හැක.
VBA Stop ප්රකාශයක් හමු වූ විට, එය වැඩසටහන් ක්රියාත්මක කිරීම නවතා ඔබගේ ක්රියාව සඳහා රැඳී සිටිනු ඇත. විචල්යවල අගයන් පරීක්ෂා කරන්න, ඉන්පසුඉදිරියට යාමට F5 ඔබන්න.
නැතහොත් ඉහත විස්තර කර ඇති පරිදි පියවරෙන් පියවර ශ්රිතය ඉටු කිරීමට F8 ඔබන්න.
Stop ප්රකාශය වැඩසටහනේ කොටසක් වන අතර එබැවින් බිඳවැටීමකදී මෙන් මකා නැත. ඔබ දෝශ නිරාකරණය කර අවසන් වූ පසු, එය ඔබම ඉවත් කරන්න. නැතහොත් තනි උද්ධෘතයක් (') සමඟින් එය පෙරට දැමීමෙන් එය අදහසක් බවට පත් කරන්න.
Debug.Print operator භාවිතයෙන් දෝෂහරණය කිරීම
ඔබට Debug.Print තුළ තැබිය හැක. කාර්යය කේතය නිවැරදි ස්ථානයේ. චක්රීයව වෙනස් වන විචල්යවල අගයන් පරීක්ෂා කිරීමට මෙය ප්රයෝජනවත් වේ.
ඔබට පහත තිර රුවක් මත Debug.Print හි ක්රියාකාරීත්වය පිළිබඳ උදාහරණයක් දැකිය හැක.
ප්රකාශය Debug.Print i, vMax අගයන් සහ ඒවායේ සාමාන්ය අංක මුද්රණය කරයි.
ක්ෂණික කවුළුව තුළ ඔබට තෝරාගත් පරාසයෙන් අංක දෙකක් (17 සහ 14) පෙනෙන අතර, එය සීමාවන් නියම කර ඒවා අතරින් උපරිමය තෝරා ගනු ලැබේ. ඉලක්කම් 1 සහ 2 යන්නෙන් අදහස් වන්නේ ශ්රිතය අංක තෝරා ගත් චක්ර 2 ක් සම්පූර්ණ කර ඇති බවයි. අපි කලින් MsgBox සමඟ කළාක් මෙන් වඩාත් වැදගත් විචල්යවල අගයන් දකිමු. නමුත් මෙය ශ්රිතය නතර කළේ නැත.
ක්රියාපටිපාටියකින් ශ්රිතයක් අමතන්න
ඔබට පරිශීලක නිර්වචනය කළ ශ්රිතයක් ඇමතීමට හැක්කේ වැඩ පත්රිකාවේ සෛලයකින් නොව ක්රියා පටිපාටියකින්. මෙම අවස්ථාවේදී, සියලු දෝෂයන් දෘශ්ය මූලික සංස්කාරක කවුළුවෙහි පෙන්වනු ඇත.
ඔබට පරිශීලක-නිර්වචනය කළ කාර්යය GetMaxBerween වෙතින් ඇමතීමට හැකි ආකාරය මෙන්න.ක්රියා පටිපාටිය:
උප පරීක්ෂණය() Dim x x = GetMaxBetween(Range ("A1:A6"), 10, 50) MsgBox(x) End Subකේතයේ ඕනෑම තැනක කර්සරය ස්ථානගත කර F5 ඔබන්න. ශ්රිතයේ දෝෂයක් නොමැති නම්, ගණනය කිරීමේ ප්රතිඵලය සහිත උත්පතන කවුළුවක් ඔබට පෙනෙනු ඇත.
දෝෂයකදී, ඔබට VBA සංස්කාරකයේ අනුරූප පණිවිඩයක් පෙනෙනු ඇත. ගණනය කිරීම නවත්වන අතර දෝෂය සිදු වූ කේත රේඛාව කහ පැහැයෙන් උද්දීපනය වේ. දෝෂය සිදුවූයේ කොතැනද සහ ඇයිද යන්න ඔබට පහසුවෙන් හඳුනාගත හැකිය.
එපමණයි. දැන් ඔබ ඔබේම ඇඩෝනයක් සාදා, එය එක්සෙල් වෙත එකතු කර ඇති අතර ඔබට එහි යූඩීඑෆ් භාවිතා කළ හැකිය. ඔබට තවත් UDF භාවිතා කිරීමට අවශ්ය නම්, VBA සංස්කාරකයේ ඇඩෝන මොඩියුලයේ කේතය ලියා එය සුරකින්න.
අදට එච්චරයි. අපි අභිරුචි කාර්යයන් නිදොස් කිරීමට විවිධ ක්රම ආවරණය කර ඇති අතර ඒවා ඔබේ වැඩපොතෙහි භාවිතා කරන ආකාරය ඉගෙන ගත්තෙමු. මෙම මාර්ගෝපදේශ ඔබට ප්රයෝජනවත් වනු ඇතැයි අපි සැබවින්ම බලාපොරොත්තු වෙමු. ඔබට කිසියම් ප්රශ්නයක් ඇත්නම්, මෙම ලිපියට අදහස් දැක්වීමේදී ලියන්න.