Shaxda tusmada
Sida aad horeba u taqaanay sida loo abuuro UDFs (iyo, waxaan rajaynayaa, inaad sidoo kale isku dayday inaad ku dabaqdo Excel-kaaga), aynu sii qoto dheerayno oo aragno waxa la samayn karo haddii isticmaalehaaga qeexan shaqada aanu shaqaynayn.
Si loo xalliyo arrimaha qaarkood marka la abuurayo hawl gaar ah, waxaad u badan tahay inaad u baahato inaad samayso qaladka. Markaa waxaad hubin kartaa in shaqadu si sax ah u shaqaynayso.
Waxa aanu baari doonaa hababka soo socda ee wax ka saarista:
Ma jirtaa hab loo maro hawl caadi ah oo tallaabo tallaabo ah si loo hubiyo sida mid kasta oo ka mid ah odhaahdiisu u shaqeyso? Hubaal! Debugging waxaa loo isticmaalaa tan.
Waxaan ku siin doonaa dhowr siyaabood oo aad ku tirtirto shaqadaada gaarka ah si aad u doorato midka adiga kuu shaqeynaya.
Tusaale ahaan, waxaan isticmaalnaa shaqada gaarka ah GetMaxInternetlaga soo bilaabo mid ka mid ah maqaaladeenii hore kaasoo xisaabinaya tirada ugu badan ee kala duwanaanta qiyamka:Shaqada GetMaxBetween(rngCells Sida Range, MinNum, MaxNum) Dim NumRange Sida Range Dim vMax Dim arrNums() Dim i Sida Isku-dhafka ReDim arrNums(rngCells.Count) ee Range kasta ee rngCells vMax =NumRange Dooro Case vMax Case MinNum + 0.01 Ilaa MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 Dhamaadka Dooro Next NumRange GetMaxBetween = Xaashida Shaqada unugyo kala duwan oo ay ku qoran yihiin nambarada, iyo sidoo kale xadka sare iyo hoose ee qiyamkaMeeshee shaqada MsgBox meelo muhiim ah
Si loola socdo fulinta xisaabinta, waxaad soo bandhigi kartaa qiyamka doorsoomayaasha ugu muhiimsan ee shaashadda ee meelaha saxda ah. Tan waxa lagu samayn karaa iyada oo la isticmaalayo sanduuqa wada hadalka ee soo booda
> MsgBoxwaa sanduuq wada hadal oo aad isticmaali karto si aad u tusto nooc ka mid ah fariinta isticmaalaha>MsgBox's syntax waxay la mid tahay hawlaha kale ee VBA:MsgBox (degdeg ah [, badhamada] [, cinwaan] [, helpfile, context])degdeg waa dood loo baahan yahay. Waxay ka kooban tahay fariinta aad ku aragto sanduuqa wada hadalka. Waxa kale oo loo isticmaali karaa in lagu muujiyo qiyamka doorsoomayaasha shakhsi ahaaneed.
Dhammaan doodaha kale waa ikhtiyaari
[ buttons ] - waxay go'aamisaa badhamada iyo astaamaha ay yihiin lagu soo bandhigay MsgBox . Tusaale ahaan, haddii aan isticmaalno ikhtiyaarka vbOkOnly , markaa kaliya badhanka OK ayaa la soo bandhigi doonaa. Xitaa haddii aad ku dhaaftay dooddan, badhankan si caadi ah ayaa loo isticmaalayaa.
[ ciwaanka ] - halkan waxaad ku qeexi kartaa cinwaanka sanduuqa farriinta
Aan ka beddelno. erayada aad ku tababarato oo aad bilowdo khaladka. Si loo muujiyofariinta, ku dar xariiqda soo socota koodka GetMaxBetween shaqsi qeexan ka hor Case Else operator:
Waa kan waxa aan ku heli doono natiijada:
Shaqada GetMax u dhaxaysa(rngCells Sida Range, MinNum, MaxNum) Dim NumRange Sida Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) NumRange Kasta oo ku jira rngCells vMax = NumRange Dooro Case vMax Case MinNum + 0.01 Ilaa MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Count -" & i Case Else GetMaxBetween = 0 Dhamaadka Xulashada Xiga NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) Dhamaadka ShaqadaAnoo isticmaalaya vMax doorsoome ee sanduuqa wada hadalka, waxaanu arki doonaa lambarada buuxiya shuruudaha xulashada, markaa in aan dooran karno kuwa ugu weyn. Iyadoo odhaahda "Tirin -" & I ciwaanka ciwaanka, waxaanu ku tusinay inta lambar ee aanu hore u dooranay si loo go'aamiyo qiimaha ugu badan. Miisaanka ayaa lagu kordhin doonaa qiime kasta oo cusub.
>Markii aanu haysano UDF-tayada, waxaanu isticmaalnaa qaacidada hoose ilaa inta u dhaxaysa taariikhda: = GetMaxBetween (A1:A6,10,50)
Tani waa lambarka ugu horreeya ee kala duwan ee A1: A6 oo buuxiya shuruudaha: ka weyn 10 laakiin ka yar ka badan 50.
Marka aad gujiso OK, fariin labaad ayaa kuu soo baxaysa lambarka 14shuruudaha. Sidaa darteed, shaqadu way ka baxdaa oo soo celisaa tan ugu weyn ee labada qiyam, 17.
Shaqada MsgBox waxaa loo isticmaali karaa meelaha ugu muhiimsan ee shaqadaada gaarka ah si loo xakameeyo sida qiyamka doorsoomayaal shaqsiyeed ayaa isbedela. Sanduuqyada fariimaha aad bay faa'iido u yeelan karaan marka aad leedahay hawl weyn iyo xisaabin badan. Xaaladdan oo kale, way kuu fududaan doontaa inaad go'aamiso qaybta koodka qaladku ka dhacayo.
Go'aami dhibcaha joojinta oo samee tallaabo tallaabo
Waxaad ku dari kartaa jabinta koodhka shaqadaada halka fulinta koodku joogsan doono. Markaa waxaad raaci kartaa habka xisaabinta tallaabo-tallaabo. Markaad sidaas sameyso, waxaad arki kartaa sida qiimaha doorsoomayaashu isu beddelaan.
>Si aad ugu darto barta goynta, dhig cursorka xariiqda ay ku jirto bayaanka halka aad dooratay inaad hakiso. Kadib midig-guji oo dooro Debug -> Beddel barta Breakpointama kaliya taabo F9 . Waxa kale oo aad riixi kartaa meesha aad rabto oo ah aagga cawlan toosan ee bidix ee code-ka shaqadaGoobada cas ayaa soo bixi doonta, sida aad ku arki karto sawirka hoose. Xariiqa koodka halka xisaabinta lagu joojin doono ayaa lagu iftiimiyay casaan Cursor-ku waxa la dhigayaa meesha aad joogsatay
>Haddii aad dulmarto cursorkaaga mid ka mid ah doorsoomayaasha koodka shaqada, waxaad arki kartaa hadda ay ku jiraanqiimaha:>>Riix F5 si aad u sii wadato xisaabintaXusuusnow. Ka dib barta jabinta, waxaad bilaabi kartaa dabagalka horumarka xisaabinta talaabo talaabo. Haddii aad riixdo badhanka F8, kaliya hal xariiq oo xiga ee code VBA ayaa la fulin doonaa. Xariiqda jaalaha ah ee falaarta leh waxay sidoo kale u guuri doontaa booskii kood ee ugu dambeeyay ee la fuliyay.
Maadaama fulinta hawsha ay hakad gashay mar kale, waxaad arki kartaa qiimayaasha hadda jira ee dhammaan doorsoomayaasha shaqada adoo isticmaalaya cursorka mouse
. Markaa waxaad riixi kartaa F8 ilaa dhamaadka xisaabinta. Ama taabo F5 si aad u sii wadato xisaabinta ilaa barta jabinta soo socotaHadii cilad dhacdo, cursorka waxa la joojin doonaa barta koodhka uu khaladku ka dhacay. Oo waxa kale oo aad arki doontaa fariin qalad pop-up ah. Tani waxay fududaynaysaa in la go'aamiyo sababta dhibaatada.
Dhibcaha jabinta ee aad sheegtay waxa lagu dabaqi doonaa ilaa aad xidhid faylka. Markaad dib u furto, waxaad u baahan doontaa inaad dib u dejiso. Ma aha habka ugu habboon, miyaadan u malaynayn?
Si kastaba ha ahaatee, dhibaatadan waa la xallin karaa. Geli Stop bayaan koodka shaqada ee meelaha lagama maarmaanka ah, oo waxaad joojin kartaa fulinta barnaamijka si la mid ah markaad isticmaalayso meelaha jabinta.
>>> Marka VBA ay la kulanto Stopbayaan, waxay joojin doontaa fulinta barnaamijka waxayna sugi doontaa ficilkaaga. Hubi qiyamka doorsoomayaasha, markaaRiix F5 si aad u sii wadato> Ama taabo F8 si aad u buuxiso shaqada talaabo-tallaabo sida kor lagu sharaxayStop weedha waa qayb ka mid ah barnaamijka sidaas darteed waa lama tirtirin, sida xaaladdu tahay barta goynta. Marka aad dhammayso qaladka, iska saar naftaada. Ama u rog faallo adoo ka horeynaya hal xigasho (').
Dib-u-dejinta adoo isticmaalaya Debug. Hawlwadeenka Daabacaadda
Waxaad ku dhejin kartaa Debug.Print gudaha code function meesha saxda ah. Tani waxay faa'iido u leedahay hubinta qiyamka doorsoomayaasha si meerto ahaan isu beddelaya.
> Waxaad ku arki kartaa tusaale wax qabad Debug.Print ee shaashadda hoose.>>0>Statement Debug.Print i, vMaxwaxay daabacdaa qiimayaasha iyo nambaradooda caadiga ah.Daaqadda degdegga ah waxaad ku arkaysaa laba lambar (17 iyo 14) oo ka socda tirada la doortay, taas oo u dhiganta xaddido oo ka mid ah kuwa ugu badan ayaa la dooran doonaa. Nambarada 1 iyo 2 waxay ka dhigan yihiin in shaqadu dhammaysay 2 wareeg oo tirooyinka lagu doortay. Waxaan aragnaa qiyamka doorsoomayaasha ugu muhiimsan, sidii aan horay ugu sameynay MsgBox . Laakiin tani ma joojin hawshii.
>Ka wac shaqada habraac
>Waxaad ka wici kartaa adeegsaha shaqada qeexan ee maaha unug ku jira xaashida shaqada, laakiin waxaad ka wici kartaa habraac. Xaaladdan oo kale, dhammaan khaladaadka waxaa lagu muujin doonaa daaqada Visual Basic Editor.Waa kan sida aad ugu yeeri karto shaqada isticmaale-qeexay ee GetMaxBerweennidaamka:
Tijaabada hoose() Dim x x = GetMaxBetween ("A1:A6"), 10, 50) MsgBox(x) Dhamaadka SubDhig cursor meel kasta oo koodka ah oo taabo F5 . Haddii aysan jirin wax qalad ah oo ku saabsan shaqada, waxaad arki doontaa daaqad pop-up ah oo leh natiijada xisaabinta.
Haddii ay dhacdo qalad, waxaad arki doontaa fariin u dhiganta tifaftiraha VBA. Xisaabinta waa la joojin doonaa oo xariiqda koodka ee khaladku ka dhacay waxaa lagu muujin doonaa jaalle. Waxaad si fudud u aqoonsan kartaa meesha iyo sababta uu khaladku u dhacay.
Waa intaas. Hadda waxaad samaysay add-in adiga kuu gaar ah, waxaad ku dartay Excel oo waxaad ku isticmaali kartaa UDF. Haddii aad rabto inaad isticmaasho UDFs badan, kaliya ku qor koodka ku jira moduleka add-in ee tafatiraha VBA oo kaydi.
>Taasi waa tan maanta. Waxaanu daboolnay habab kala duwan oo lagu saxayo shaqooyinka gaarka ah waxaanan ku baranay sida loo isticmaalo buugaaga shaqada. Waxaan runtii rajaynaynaa inaad tilmaamahan ku caawiso. Haddii aad wax su'aalo ah qabtid, ku qor faallooyinka maqaalkan.