Excel માં કસ્ટમ ફંક્શન્સને કેવી રીતે ડીબગ કરવું તે જાણો

  • આ શેર કરો
Michael Brown

જેમ તમે પહેલાથી જ જાણો છો કે UDF કેવી રીતે બનાવવું (અને, હું આશા રાખું છું કે, તમે તેને તમારા Excel માં લાગુ કરવાનો પણ પ્રયાસ કર્યો હશે), ચાલો થોડું ઊંડું ખોદીએ અને જોઈએ કે તમારું વપરાશકર્તા નિર્ધારિત કાર્ય કામ કરતું ન હોય તો શું કરી શકાય.

કસ્ટમ ફંક્શન બનાવતી વખતે કેટલીક સમસ્યાઓ ઉકેલવા માટે, તમારે મોટે ભાગે ડીબગ ચલાવવાની જરૂર પડશે. પછી તમે ખાતરી કરી શકો છો કે ફંક્શન યોગ્ય રીતે કામ કરી રહ્યું છે.

અમે નીચેની ડીબગીંગ તકનીકોનું અન્વેષણ કરીશું:

    જ્યારે તમે કસ્ટમ ફંક્શન બનાવો છો, ત્યારે હંમેશા એક શક્યતા રહે છે. કે તમે ભૂલ કરશો. કસ્ટમ કાર્યો સામાન્ય રીતે ખૂબ જટિલ હોય છે. અને તેઓ હંમેશા તરત જ યોગ્ય રીતે કામ કરવાનું શરૂ કરતા નથી. ફોર્મ્યુલા ખોટું પરિણામ અથવા #VALUE! ભૂલ માનક એક્સેલ ફંક્શનથી વિપરીત, તમે અન્ય કોઈ સંદેશાઓ જોશો નહીં.

    શું તેના દરેક સ્ટેટમેન્ટ્સ કેવી રીતે કાર્ય કરે છે તે તપાસવા માટે કસ્ટમ ફંક્શન સ્ટેપ બાય સ્ટેપમાંથી પસાર થવાની કોઈ રીત છે? ચોક્કસ! આ માટે ડીબગીંગનો ઉપયોગ કરવામાં આવે છે.

    હું તમને તમારા કસ્ટમ ફંક્શનને ડીબગ કરવાની ઘણી રીતો ઓફર કરીશ જેથી તમે તમારા માટે કામ કરે તે પસંદ કરી શકો.

    ઉદાહરણ તરીકે, અમે કસ્ટમ ફંક્શનનો ઉપયોગ કરીએ છીએ અમારા અગાઉના લેખોમાંથી GetMaxBetween જે મૂલ્યોની ઉલ્લેખિત શ્રેણીમાં મહત્તમ સંખ્યાની ગણતરી કરે છે:

    ફંક્શન GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dm NumRange As Range Dim vMax Dim arrNums() Dim i rngCells vMax = માં દરેક સંખ્યા શ્રેણી માટે પૂર્ણાંક ReDim arrNums(rngCells.Count) તરીકેNumRange સિલેક્ટ કેસ vMax Case MinNum + 0.01 to MaxNum - 0.01 arrNums(i) = vMax i = i + 1 કેસ બાકી GetMaxBetween = 0 End પસંદ કરો આગળની NumRange GetMaxBetween = WorksheetFunction.Max(arrNums> ફંકશન એ છે કે <0. કોષોની શ્રેણી જ્યાં નંબરો લખવામાં આવે છે, તેમજ મૂલ્યોની ઉપલી અને નીચલી મર્યાદા.

    મહત્વના સ્થળોએ MsgBox ફંક્શન મૂકો

    ગણતરીના અમલ પર દેખરેખ રાખવા માટે, તમે પ્રદર્શિત કરી શકો છો યોગ્ય સ્થાનો પર સ્ક્રીન પર સૌથી મહત્વપૂર્ણ ચલોના મૂલ્યો. આ પોપ-અપ ડાયલોગ બોક્સનો ઉપયોગ કરીને કરી શકાય છે.

    MsgBox એ એક ડાયલોગ બોક્સ છે જેનો ઉપયોગ તમે વપરાશકર્તાને અમુક પ્રકારનો સંદેશ બતાવવા માટે કરી શકો છો.

    MsgBoxનું વાક્યરચના અન્ય VBA ફંક્શન્સ જેવું જ છે:

    MsgBox(prompt [, buttons] [, title] [, helpfile, context])

    prompt એ જરૂરી દલીલ છે. તેમાં તે સંદેશ છે જે તમે ડાયલોગ બોક્સમાં જુઓ છો. તેનો ઉપયોગ વ્યક્તિગત ચલોની કિંમતો દર્શાવવા માટે પણ થઈ શકે છે.

    અન્ય તમામ દલીલો વૈકલ્પિક છે.

    [ બટન્સ ] - કયા બટનો અને ચિહ્નો છે તે નક્કી કરે છે MsgBox માં પ્રદર્શિત થાય છે. ઉદાહરણ તરીકે, જો આપણે vbOkOnly વિકલ્પનો ઉપયોગ કરીએ, તો માત્ર OK બટન જ પ્રદર્શિત થશે. જો તમે આ દલીલ ચૂકી ગયા હોવ તો પણ, આ બટનનો ઉપયોગ મૂળભૂત રીતે થાય છે.

    [ શીર્ષક ] - અહીં તમે સંદેશ બોક્સનું શીર્ષક સ્પષ્ટ કરી શકો છો.

    ચાલો અહીંથી સ્વિચ કરીએ પ્રેક્ટિસ કરવા અને ડિબગીંગ શરૂ કરવા માટેના શબ્દો. પ્રદર્શિત કરવા માટેસંદેશ, કેસ એલ્સ ઓપરેટર પહેલાં GetMaxBetween વપરાશકર્તા દ્વારા નિર્ધારિત કાર્યના કોડમાં નીચેની લીટી ઉમેરો:

    MsgBox vMax, "Count -" & i

    અહીં પરિણામમાં આપણને શું મળશે:

    ફંક્શન GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) rngCells vMax = NumRange માં દરેક નંબર રેન્જ માટે કેસ vMax કેસ MinNum + 0.01 થી MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax, "કાઉન્ટ -" & i Case Else GetMaxBetween = 0 End નેક્સ્ટ પસંદ કરો NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) એન્ડ ફંક્શન

    સંવાદ બોક્સમાં vMax ચલનો ઉપયોગ કરીને, આપણે જોઈશું કે કઈ સંખ્યાઓ પસંદગીના માપદંડને પૂર્ણ કરે છે, તેથી કે આપણે તેમાંથી સૌથી મોટી પસંદ કરી શકીએ. અભિવ્યક્તિ સાથે "ગણતરી -" & I શીર્ષક પટ્ટીમાં, અમે સૂચવીએ છીએ કે મહત્તમ મૂલ્ય નક્કી કરવા માટે અમે પહેલાથી કેટલી સંખ્યાઓ પસંદ કરી છે. દરેક નવા મૂલ્ય સાથે કાઉન્ટર વધારવામાં આવશે.

    એકવાર અમારી પાસે અમારું UDF સેટ થઈ જાય, અમે નીચેની ફોર્મ્યુલાને તારીખ શ્રેણીમાં લાગુ કરીએ છીએ:

    = GetMaxBetween (A1:A6,10,50)

    Enter બટન પછી દબાવવામાં આવે છે, તમે નીચેના સ્ક્રીનશૉટમાં એક સંદેશ જોશો:

    આ શ્રેણી A1: A6 માં પ્રથમ નંબર છે જે માપદંડને પૂર્ણ કરે છે: 10 થી વધુ પરંતુ ઓછા 50 કરતાં.

    તમે બરાબર ક્લિક કરો પછી, 14 નંબર સાથે બીજો સંદેશ દેખાશે. બાકીના નંબરો પસંદગી સાથે મેળ ખાતા નથી.માપદંડ તેથી, ફંક્શન બહાર નીકળે છે અને બે મૂલ્યોમાંથી સૌથી મોટું પાછું આપે છે, 17.

    MsgBox ફંક્શનનો ઉપયોગ તમારા કસ્ટમ ફંક્શનમાં સૌથી મહત્વપૂર્ણ સ્થળોએ મૂલ્યોને નિયંત્રિત કરવા માટે કરી શકાય છે. વ્યક્તિગત ચલોમાં ફેરફાર. જ્યારે તમારી પાસે મોટું કાર્ય હોય અને ઘણી બધી ગણતરી હોય ત્યારે મેસેજ બોક્સ ખૂબ જ ઉપયોગી થઈ શકે છે. આ કિસ્સામાં, કોડના કયા ભાગમાં ભૂલ આવી છે તે નિર્ધારિત કરવું તમારા માટે સરળ રહેશે.

    સ્ટોપિંગ પોઈન્ટ્સ નક્કી કરો અને સ્ટેપ બાય સ્ટેપ કરો

    તમે કોડમાં બ્રેકપોઈન્ટ ઉમેરી શકો છો તમારું કાર્ય જ્યાં કોડ એક્ઝેક્યુશન બંધ થશે. તેથી તમે ગણતરીની પ્રક્રિયાને તબક્કાવાર અનુસરી શકો છો. આમ કરવાથી, તમે જોઈ શકો છો કે ચલોની કિંમતો કેવી રીતે બદલાય છે.

    બ્રેકપોઇન્ટ ઉમેરવા માટે, કર્સરને સ્ટેટમેન્ટ ધરાવતી લીટી પર મૂકો જ્યાં તમે થોભાવવાનું પસંદ કરો છો. પછી જમણું-ક્લિક કરો અને ડિબગ -> બ્રેકપોઇન્ટને ટોગલ કરો અથવા ફક્ત F9 દબાવો. તમે ફંક્શન કોડની ડાબી બાજુએ વર્ટિકલ ગ્રે એરિયા પર ઇચ્છિત જગ્યાએ ક્લિક પણ કરી શકો છો.

    એક લાલ વર્તુળ દેખાશે, જે તમે નીચે સ્ક્રીનશોટમાં જોઈ શકો છો. કોડની લાઇન જ્યાં ગણતરી બંધ કરવામાં આવશે તે લાલ રંગમાં પ્રકાશિત થાય છે.

    હવે, જ્યારે ફંક્શન ચાલી રહ્યું હોય ત્યારે VBA એડિટર વિન્ડો ખોલવામાં આવશે. કર્સર તમે જ્યાં રોકાયા છો તે સ્થાન પર સ્થિત થશે.

    જો તમે તમારા માઉસ કર્સરને ફંક્શન કોડમાંના કોઈપણ ચલ પર હોવર કરો છો, તો તમે તેમનો વર્તમાન જોઈ શકો છોમૂલ્ય:

    ગણતરી ચાલુ રાખવા માટે F5 દબાવો.

    નોંધ. બ્રેકપોઇન્ટ પછી, તમે ગણતરીની પ્રગતિને તબક્કાવાર ટ્રેક કરવાનું શરૂ કરી શકો છો. જો તમે F8 બટન દબાવો છો, તો VBA કોડની માત્ર એક આગલી લાઇન એક્ઝિક્યુટ થશે. તીર સાથેની પીળી રેખા પણ છેલ્લી એક્ઝિક્યુટેડ કોડ પોઝિશન પર જશે.

    ફંક્શનનું એક્ઝેક્યુશન ફરીથી થોભાવવામાં આવ્યું હોવાથી, તમે માઉસ કર્સરનો ઉપયોગ કરીને ફંક્શનના તમામ ચલોની વર્તમાન કિંમતો જોઈ શકો છો.

    F8 નું આગલું પ્રેસ આપણને એક પગલું આગળ લઈ જશે. . તેથી તમે ગણતરીના અંત સુધી F8 દબાવી શકો છો. અથવા આગલા બ્રેકપોઈન્ટ સુધી ગણતરી ચાલુ રાખવા માટે F5 દબાવો.

    જો કોઈ ભૂલ થાય, તો કર્સર કોડના તે બિંદુ પર બંધ થઈ જશે જ્યાં ભૂલ આવી છે. અને તમને એક પોપ-અપ એરર મેસેજ પણ દેખાશે. આ સમસ્યાનું કારણ નક્કી કરવાનું સરળ બનાવે છે.

    તમે ઉલ્લેખિત બ્રેકપોઇન્ટ જ્યાં સુધી તમે ફાઇલ બંધ નહીં કરો ત્યાં સુધી લાગુ કરવામાં આવશે. જ્યારે તમે તેને ફરીથી ખોલો છો, ત્યારે તમારે તેને ફરીથી સેટ કરવાની જરૂર પડશે. સૌથી અનુકૂળ પદ્ધતિ નથી, તમને નથી લાગતું?

    જો કે, આ સમસ્યા ઉકેલી શકાય છે. જરૂરી બિંદુઓ પર ફંક્શન કોડમાં રોકો સ્ટેટમેન્ટ દાખલ કરો, અને તમે બ્રેકપોઇન્ટનો ઉપયોગ કરતી વખતે પ્રોગ્રામના અમલીકરણને તે જ રીતે રોકી શકો છો.

    જ્યારે VBA એ Stop સ્ટેટમેન્ટનો સામનો કરે છે, ત્યારે તે પ્રોગ્રામ એક્ઝેક્યુશન બંધ કરશે અને તમારી ક્રિયાની રાહ જોશે. પછી ચલોની કિંમતો તપાસોચાલુ રાખવા માટે F5 દબાવો.

    અથવા ઉપર વર્ણવ્યા મુજબ પગલું-દર-પગલાં કાર્ય પૂર્ણ કરવા માટે F8 દબાવો.

    રોકો વિધાન પ્રોગ્રામનો એક ભાગ છે અને તેથી કાઢી નાખેલ નથી, જેમ કે બ્રેકપોઇન્ટની બાબતમાં છે. જ્યારે તમે ડીબગીંગ પૂર્ણ કરી લો, ત્યારે તેને જાતે દૂર કરો. અથવા તેને એક ક્વોટ (') સાથે આગળ રાખીને ટિપ્પણીમાં ફેરવો.

    Debug.Print ઓપરેટરનો ઉપયોગ કરીને ડીબગીંગ કરો

    તમે Debug.Print ને આમાં મૂકી શકો છો. કાર્ય કોડ યોગ્ય જગ્યાએ. ચક્રીય રીતે બદલાતા ચલોના મૂલ્યોને તપાસવા માટે આ ઉપયોગી છે.

    તમે નીચે આપેલા સ્ક્રીનશોટ પર ડીબગ. પ્રિન્ટના પ્રદર્શનનું ઉદાહરણ જોઈ શકો છો.

    સ્ટેટમેન્ટ ડિબગ. પ્રિન્ટ i, vMax મૂલ્યો અને તેમની ક્રમાંકિત સંખ્યાઓ છાપે છે.

    તત્કાલ વિન્ડોમાં તમે પસંદ કરેલ શ્રેણીમાંથી બે સંખ્યાઓ (17 અને 14) જુઓ છો, જે અનુરૂપ છે મર્યાદા સેટ કરો અને જેમાંથી મહત્તમ પસંદ કરવામાં આવશે. અંક 1 અને 2 નો અર્થ છે કે ફંક્શને 2 ચક્ર પૂર્ણ કર્યા છે જેમાં સંખ્યાઓ પસંદ કરવામાં આવી હતી. અમે સૌથી મહત્વપૂર્ણ ચલોનાં મૂલ્યો જોઈએ છીએ, જેમ કે અમે પહેલા MsgBox સાથે કર્યું હતું. પરંતુ આનાથી ફંક્શન બંધ ન થયું.

    પ્રક્રિયામાંથી ફંક્શનને કૉલ કરો

    તમે વર્કશીટમાંના કોષમાંથી નહીં, પરંતુ પ્રક્રિયામાંથી વપરાશકર્તા વ્યાખ્યાયિત ફંક્શનને કૉલ કરી શકો છો. આ કિસ્સામાં, બધી ભૂલો વિઝ્યુઅલ બેઝિક એડિટર વિન્ડોમાં બતાવવામાં આવશે.

    અહીં આપેલ છે કે તમે વપરાશકર્તા-વ્યાખ્યાયિત કાર્યને કેવી રીતે કૉલ કરી શકો છો તેમાંથી GetMaxBerweenપ્રક્રિયા:

    સબ ટેસ્ટ() Dim x x = GetMaxBetween(રેન્જ ( "A1:A6" ), 10, 50) MsgBox(x) End Sub

    કોડમાં ગમે ત્યાં કર્સરને સ્થાન આપો અને F5 દબાવો. જો ફંક્શનમાં કોઈ ભૂલ નથી, તો તમે ગણતરીના પરિણામ સાથે એક પોપ-અપ વિન્ડો જોશો.

    ભૂલના કિસ્સામાં, તમે VBA સંપાદકમાં અનુરૂપ સંદેશ જોશો. ગણતરી બંધ કરવામાં આવશે અને કોડની લાઇન જેમાં ભૂલ આવી છે તે પીળા રંગમાં પ્રકાશિત થશે. તમે સરળતાથી ઓળખી શકો છો કે ભૂલ ક્યાં અને શા માટે આવી.

    બસ. હવે તમે તમારું પોતાનું એડ-ઇન બનાવ્યું છે, તેને એક્સેલમાં ઉમેર્યું છે અને તમે તેમાં UDF નો ઉપયોગ કરી શકો છો. જો તમે વધુ UDF નો ઉપયોગ કરવા માંગતા હો, તો VBA એડિટરમાં એડ-ઇન મોડ્યુલમાં કોડ લખો અને તેને સાચવો.

    આજ માટે બસ. અમે કસ્ટમ ફંક્શન્સને ડીબગ કરવાની વિવિધ રીતો આવરી લીધી છે અને તમારી વર્કબુકમાં તેનો ઉપયોગ કેવી રીતે કરવો તે શીખ્યા છીએ. અમે ખરેખર આશા રાખીએ છીએ કે તમને આ દિશાનિર્દેશો મદદરૂપ થશે. જો તમને કોઈ પ્રશ્નો હોય, તો આ લેખની ટિપ્પણીઓમાં લખો.

    માઈકલ બ્રાઉન સોફ્ટવેર ટૂલ્સનો ઉપયોગ કરીને જટિલ પ્રક્રિયાઓને સરળ બનાવવાના જુસ્સા સાથે સમર્પિત ટેકનોલોજી ઉત્સાહી છે. ટેક ઉદ્યોગમાં એક દાયકા કરતાં વધુ અનુભવ સાથે, તેમણે Microsoft Excel અને Outlook, તેમજ Google Sheets અને Docsમાં તેમની કુશળતાને સન્માનિત કરી છે. માઈકલનો બ્લોગ તેના જ્ઞાન અને કુશળતાને અન્ય લોકો સાથે શેર કરવા માટે સમર્પિત છે, ઉત્પાદકતા અને કાર્યક્ષમતામાં સુધારો કરવા માટે અનુસરવામાં સરળ ટીપ્સ અને ટ્યુટોરિયલ્સ પ્રદાન કરે છે. ભલે તમે અનુભવી વ્યાવસાયિક હોવ કે શિખાઉ માણસ, માઈકલનો બ્લોગ આ આવશ્યક સોફ્ટવેર સાધનોમાંથી સૌથી વધુ મેળવવા માટે મૂલ્યવાન આંતરદૃષ્ટિ અને વ્યવહારુ સલાહ આપે છે.