Jedwali la yaliyomo
Kama unavyojua tayari jinsi ya kuunda UDF (na, natumai, umejaribu pia kuzitumia kwenye Excel yako), wacha tuchimbue kwa undani zaidi na tuone nini kinaweza kufanywa ikiwa kitendakazi chako kilichobainishwa na mtumiaji hakifanyi kazi.
Ili kutatua baadhi ya masuala wakati wa kuunda utendakazi maalum, kuna uwezekano mkubwa utahitaji kufanya utatuzi. Kisha unaweza kuwa na uhakika kwamba chaguo hili la kukokotoa linafanya kazi ipasavyo.
Tutachunguza mbinu zifuatazo za utatuzi:
Unapounda utendakazi maalum, kuna uwezekano kila wakati. kwamba utafanya makosa. Vitendaji maalum kwa kawaida huwa changamano. Na si mara zote huanza kufanya kazi kwa usahihi mara moja. Fomula inaweza kurudisha matokeo yasiyo sahihi au #VALUE! kosa. Tofauti na vitendaji vya kawaida vya Excel, hutaona ujumbe mwingine wowote.
Je, kuna njia ya kupitia utendakazi maalum hatua kwa hatua ili kuangalia jinsi kila taarifa yake inavyofanya kazi? Hakika! Utatuzi hutumiwa kwa hili.
Nitakupa njia kadhaa za kutatua utendakazi wako maalum ili uweze kuchagua inayokufaa.
Kama mfano, tunatumia chaguo maalum la kukokotoa. GetMaxBetween kutoka kwa mojawapo ya vifungu vyetu vilivyotangulia ambavyo hukokotoa idadi ya juu zaidi katika anuwai maalum ya thamani:
Kazi GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange Kama Masafa Dim vMax Dim arrNums() Dim i Kama Integer ReDim arrNums(rngCells.Count) Kwa Kila Nambari Katika rngCells vMax =NumRange Chagua Kesi vMax Kesi MinNum + 0.01 Hadi MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Kesi Else GetMaxBetween = 0 Mwisho Chagua Nambari Inayofuata GetMaxBetween = WorksheetFunction.Max(arrNums) Hoja za kazi za Mwisho niHoja ya kukokotoa safu ya seli ambapo nambari zimeandikwa, pamoja na kikomo cha juu na cha chini cha thamani.
Weka kitendakazi cha MsgBox katika sehemu muhimu
Ili kufuatilia utekelezwaji wa hesabu, unaweza kuonyesha thamani za vigezo muhimu zaidi kwenye skrini katika maeneo sahihi. Hili linaweza kufanywa kwa kutumia visanduku vya kidadisi ibukizi.
MsgBox ni kisanduku cha mazungumzo ambacho unaweza kutumia kuonyesha aina fulani ya ujumbe kwa mtumiaji.
Sintaksia ya MsgBox ni sawa na vitendaji vingine vya VBA:
MsgBox(prompt [, buttons] [, title] [, helpfile, context])prompt ni hoja inayohitajika. Ina ujumbe unaouona kwenye kisanduku cha mazungumzo. Inaweza pia kutumika kuonyesha thamani za vigeu vya mtu binafsi.
Hoja nyingine zote ni za hiari.
[ vifungo ] - huamua ni vitufe na ikoni zipi. imeonyeshwa kwenye MsgBox . Kwa mfano, tukitumia chaguo vbOkOnly , basi kitufe cha OK pekee ndicho kitaonyeshwa. Hata kama ulikosa hoja hii, kitufe hiki kinatumiwa kama chaguo-msingi.
[ kichwa ] - hapa unaweza kubainisha kichwa cha kisanduku cha ujumbe.
Hebu tubadilishe kutoka kwa kisanduku cha ujumbe. maneno ya kufanya mazoezi na kuanza kurekebisha. Ili kuonyeshaujumbe, ongeza laini ifuatayo kwenye msimbo wa GetMaxBetween kitendakazi kilichobainishwa na mtumiaji kabla ya opereta Case Else :
MsgBox vMax,, "Hesabu -" & iHaya ndiyo tutapata katika matokeo:
Kazi ya GetMaxBetween(rngCells Kama Masafa, MinNum, MaxNum) Dim NumRange Kama Masafa Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) Kwa Kila Idadi ya Idadi Katika rngCells vMax = Idadi ya Idadi Chagua Kesi vMax Kesi MinNum + 0.01 Hadi MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Hesabu -" & i Case Else GetMaxBetween = 0 Mwisho Chagua Nambari Inayofuata GetMaxBetween = WorksheetFunction.Max(arrNums) Kazi ya MwishoKwa kutumia vMax kutofautisha katika kisanduku cha mazungumzo, tutaona ni nambari zipi zinazokidhi vigezo vya uteuzi, kwa hivyo. kwamba tunaweza kuchagua kubwa zaidi yao. Kwa usemi "Hesabu -" & Mimi kwenye upau wa kichwa, tunaonyesha ni nambari ngapi ambazo tayari tumechagua ili kuamua thamani ya juu. Kaunta itaongezwa kwa kila thamani mpya.
Tukishaweka UDF yetu, tunatumia fomula iliyo hapa chini kwenye safu ya tarehe:
= GetMaxBetween (A1:A6,10,50)
Baada ya kitufe cha Ingiza. inabonyezwa, utaona ujumbe kama katika picha ya skrini hapa chini:
Hii ndiyo nambari ya kwanza katika safu A1: A6 inayokidhi vigezo: kubwa kuliko 10 lakini chini ya kuliko 50.
Baada ya kubofya Sawa, ujumbe wa pili unatokea na nambari 14. Nambari zingine zote hazilingani na uteuzi.vigezo. Kwa hivyo, chaguo za kukokotoa huondoka na kurudisha thamani kubwa zaidi kati ya hizo mbili, 17.
Kitendaji cha MsgBox kinaweza kutumika katika sehemu muhimu zaidi katika utendakazi wako maalum ili kudhibiti jinsi thamani mabadiliko ya vigezo vya mtu binafsi. Sanduku za ujumbe zinaweza kuwa muhimu sana wakati una kazi kubwa na hesabu nyingi. Katika hali hii, itakuwa rahisi kwako kuamua ni sehemu gani ya msimbo ambapo hitilafu hutokea.
Amua sehemu za kusitisha na utekeleze hatua kwa hatua
Unaweza kuongeza sehemu za kukiuka kwa msimbo wa kazi yako ambapo utekelezaji wa nambari utaacha. Kwa hivyo unaweza kufuata mchakato wa kuhesabu hatua kwa hatua. Kwa kufanya hivyo, unaweza kuona jinsi thamani ya vigeu inavyobadilika.
Ili kuongeza sehemu ya kukatika, weka kishale kwenye mstari ulio na taarifa ambapo unachagua kusitisha. Kisha ubofye kulia na uchague Debug -> Geuza Breakpoint au bonyeza tu F9 . Unaweza pia kubofya mahali unapotaka kwenye eneo la wima la kijivu lililo upande wa kushoto wa msimbo wa kukokotoa.
Mduara mwekundu utaonekana, kama unavyoona kwenye picha ya skrini iliyo hapa chini. Mstari wa msimbo ambapo hesabu itasimamishwa imeangaziwa kwa rangi nyekundu.
Sasa, dirisha la kihariri cha VBA litafunguliwa wakati utendakazi unaendelea. Mshale utawekwa mahali uliposimama.
Ukielea juu ya kielekezi cha kipanya chako juu ya viambajengo vyovyote katika msimbo wa kukokotoa, unaweza kuona vya sasa.thamani:
Bonyeza F5 ili kuendelea na hesabu.
Kumbuka. Baada ya mapumziko, unaweza kuanza kufuatilia maendeleo ya mahesabu hatua kwa hatua. Ukibonyeza kitufe cha F8, mstari mmoja tu unaofuata wa msimbo wa VBA utatekelezwa. Mstari wa manjano wenye mshale pia utasogea hadi kwenye nafasi ya mwisho iliyotekelezwa ya msimbo.
Kwa kuwa utekelezaji wa chaguo za kukokotoa umesitishwa tena, unaweza kuona thamani za sasa za vigeu vyote vya chaguo za kukokotoa kwa kutumia kiteuzi cha kipanya.
Mbonyezo unaofuata wa F8 utatupeleka hatua moja mbele. . Kwa hivyo unaweza kubonyeza F8 hadi mwisho wa hesabu. Au bonyeza F5 ili kuendelea na hesabu hadi kikomo kifuatacho.
Hitilafu ikitokea, kishale kitazimwa katika sehemu ya msimbo ambapo hitilafu ilitokea. Na pia utaona ujumbe wa makosa ya pop-up. Hii hurahisisha kubainisha sababu ya tatizo.
Vipeo ulivyobainisha vitatumika hadi utakapofunga faili. Unapoifungua tena, utahitaji kuziweka tena. Si njia rahisi zaidi, hufikirii?
Hata hivyo, tatizo hili linaweza kutatuliwa. Ingiza taarifa ya Acha kwenye msimbo wa utendaji kazi katika sehemu zinazohitajika, na unaweza kusimamisha utekelezaji wa programu kwa njia sawa na unapotumia vizuizi.
VBA inapokutana na taarifa ya Stop , itasimamisha utekelezaji wa programu na kusubiri kitendo chako. Angalia maadili ya vigezo, basibonyeza F5 ili kuendelea.
Au bonyeza F8 ili kutimiza kitendakazi hatua kwa hatua kama ilivyoelezwa hapo juu.
Taarifa ya Sitisha ni sehemu ya programu na kwa hivyo ni haijafutwa, kama ilivyo kwa sehemu ya kuvunja. Ukimaliza kurekebisha, iondoe mwenyewe. Au igeuze kuwa maoni kwa kutanguliza kwa nukuu moja (').
Kutatua kwa kutumia Opereta ya Debug.Print
Unaweza kuweka Debug.Print ndani msimbo wa kazi mahali pazuri. Hii ni muhimu kwa kuangalia thamani za vigeu vinavyobadilika kwa mzunguko.
Unaweza kuona mfano wa utendaji wa Debug.Print kwenye picha ya skrini iliyo hapa chini.
Taarifa Debug.Print i, vMax huchapisha thamani na nambari zake za kawaida.
Katika dirisha la Mara moja unaona nambari mbili (17 na 14) kutoka kwa safu iliyochaguliwa, ambayo inalingana na kuweka mipaka na kati ya ambayo upeo utachaguliwa. Nambari 1 na 2 inamaanisha kuwa chaguo la kukokotoa limekamilisha mizunguko 2 ambayo nambari zilichaguliwa. Tunaona maadili ya vigeu muhimu zaidi, kama tulivyofanya awali na MsgBox . Lakini hii haikusimamisha chaguo la kukokotoa.
Ita chaguo za kukokotoa kutoka kwa utaratibu
Unaweza kupiga simu kitendakazi kilichobainishwa na mtumiaji si kutoka kwa kisanduku katika lahakazi, lakini kutokana na utaratibu. Katika hali hii, makosa yote yataonyeshwa kwenye dirisha la Kihariri cha Visual Basic.
Hivi ndivyo unavyoweza kuita kitendakazi kilichoainishwa na mtumiaji GetMaxBerween kutoka kwa a.procedure:
Sub Test() Dim x x = GetMaxBetween(Range ( "A1:A6" ), 10, 50) MsgBox(x) End SubWeka kishale mahali popote kwenye msimbo na ubonyeze F5 . Ikiwa hakuna hitilafu katika chaguo la kukokotoa, utaona dirisha ibukizi lenye matokeo ya hesabu.
Ikitokea hitilafu, utaona ujumbe unaolingana katika kihariri cha VBA. Hesabu itasimamishwa na mstari wa msimbo ambao hitilafu ilitokea itasisitizwa kwa njano. Unaweza kutambua kwa urahisi wapi na kwa nini hitilafu ilitokea.
Ni hayo tu. Sasa umeunda programu-jalizi yako mwenyewe, umeiongeza kwa Excel na unaweza kutumia UDF ndani yake. Ikiwa ungependa kutumia UDF zaidi, andika tu msimbo katika sehemu ya programu-jalizi katika kihariri cha VBA na uihifadhi.
Ndivyo ilivyo kwa leo. Tumeangazia njia tofauti za kutatua utendakazi maalum na tumejifunza jinsi ya kuzitumia kwenye kitabu chako cha kazi. Tunatumai kuwa utapata miongozo hii kuwa ya manufaa. Ikiwa una maswali yoyote, andika katika maoni kwa makala hii.