Tabl cynnwys
Gan eich bod eisoes yn gwybod sut i greu UDFs (a, gobeithio, rydych chi hefyd wedi ceisio eu cymhwyso yn eich Excel), gadewch i ni gloddio ychydig yn ddyfnach a gweld beth ellir ei wneud rhag ofn na fydd eich swyddogaeth ddiffiniedig defnyddiwr yn gweithio.
Er mwyn datrys rhai problemau wrth greu ffwythiant personol, mae'n debygol y bydd angen i chi redeg dadfygio. Yna gallwch fod yn sicr bod y ffwythiant yn gweithio'n gywir.
Byddwn yn archwilio'r technegau dadfygio canlynol:
Pan fyddwch yn creu ffwythiant personol, mae posibilrwydd bob amser y byddwch yn gwneud camgymeriad. Mae swyddogaethau personol fel arfer yn eithaf cymhleth. Ac nid ydynt bob amser yn dechrau gweithio'n gywir ar unwaith. Gall y fformiwla ddychwelyd canlyniad anghywir neu'r #VALUE ! gwall. Yn wahanol i swyddogaethau Excel safonol, ni fyddwch yn gweld unrhyw negeseuon eraill.
A oes ffordd i fynd trwy swyddogaeth arferiad gam wrth gam i wirio sut mae pob un o'i ddatganiadau yn gweithio? Cadarn! Mae dadfygio yn cael ei ddefnyddio ar gyfer hyn.
Byddaf yn cynnig sawl ffordd i chi ddadfygio eich ffwythiant personol fel y gallwch ddewis yr un sy'n gweithio i chi.
Fel enghraifft, rydym yn defnyddio'r ffwythiant personol GetMaxBetween o un o'n herthyglau blaenorol sy'n cyfrifo'r nifer mwyaf yn yr ystod benodedig o werthoedd:
Swyddogaeth GetMaxBetween(rngCells Fel Ystod, Isafswm, Uchafswm) Dim Nifer Fel Ystod Dim vMax Dim arrNums() Dim i Fel Cyfanrif ReDim arrNums(rngCells.Count) Ar Gyfer Pob Rhif Nifer Yn rngCells vMax =NumRange Dewiswch Achos vMax Case Isafswm + 0.01 I MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Achos Arall GetMaxBetween = 0 Diwedd Dewiswch Nesaf NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) Arg Diwedd Swyddogaethau <0 ystod o gelloedd lle ysgrifennir rhifau, yn ogystal â therfyn uchaf ac isaf y gwerthoedd.Rhowch y ffwythiant MsgBox mewn mannau pwysig
Er mwyn monitro gweithrediad cyfrifiadau, gallwch ddangos gwerthoedd y newidynnau pwysicaf ar y sgrin yn y mannau cywir. Gellir gwneud hyn drwy ddefnyddio blychau ymgom pop-up.
Blwch deialog yw MsgBox y gallwch ei ddefnyddio i ddangos rhyw fath o neges i'r defnyddiwr.
Cystrawen msgBox yn debyg i swyddogaethau VBA eraill:
Mae MsgBox (anog [, botymau] [, teitl] [, ffeil help, cyd-destun])anog yn ddadl ofynnol. Mae'n cynnwys y neges a welwch yn y blwch deialog. Gellir ei ddefnyddio hefyd i ddangos gwerthoedd newidynnau unigol.
Mae'r holl argiau eraill yn ddewisol.
[ botymau ] - yn pennu pa fotymau ac eiconau sy'n dangosir yn y MsgBox . Er enghraifft, os defnyddiwn yr opsiwn vbOkOnly , yna dim ond y botwm OK fydd yn cael ei arddangos. Hyd yn oed pe baech yn methu'r arg hon, defnyddir y botwm hwn yn ddiofyn.
[ title ] - yma gallwch nodi teitl y blwch neges.
Dewch i ni newid o geiriau i ymarfer a dechrau dadfygio. I arddangos yneges, ychwanegwch y llinell ganlynol at god y swyddogaeth GetMaxBetween a ddiffinnir gan y defnyddiwr cyn y gweithredwr Achos Arall :
MsgBox vMax,, "Count -" & iDyma beth gawn ni yn y canlyniad:
Swyddogaeth GetMaxBetween(rngCells Fel Ystod, Isafswm, Uchafswm) Dim Nifer Fel Ystod Dim vMax Dim ArrNums() Dim i Fel Cyfanrif ReDim arrNums(rngCells.Count) Ar gyfer Pob NumRange Yn rngCells vMax = NumRange Dewiswch Achos vMax Case Isafswm + 0.01 I MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Count -" & i Achos Arall GetMaxBetween = 0 Diwedd Dewis Nesaf NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) Diwedd SwyddogaethGan ddefnyddio'r newidyn vMax yn y blwch deialog, byddwn yn gweld pa rifau sy'n bodloni'r meini prawf ar gyfer dewis, felly y gallwn ddewis y mwyaf ohonynt. Gyda'r ymadrodd "Cyfrif -" & I yn y bar teitl, rydym yn nodi faint o rifau yr ydym eisoes wedi'u dewis i bennu'r gwerth mwyaf. Bydd y rhifydd yn cael ei gynyddu gyda phob gwerth newydd.
Ar ôl i ni gael ein set UDF, rydyn ni'n cymhwyso'r fformiwla isod i'r ystod dyddiad:
= GetMaxBetween (A1:A6,10,50)
Ar ôl y botwm Enter wedi'i wasgu, fe welwch neges fel yn y sgrinlun isod:
Dyma'r rhif cyntaf yn yr ystod A1: A6 sy'n bodloni'r meini prawf: mwy na 10 ond llai na 50.
Ar ôl clicio Iawn, mae ail neges yn ymddangos gyda'r rhif 14. Nid yw gweddill y rhifau yn cyfateb i'r dewisiadmeini prawf. Felly, mae'r ffwythiant yn gadael ac yn dychwelyd y mwyaf o'r ddau werth, 17.
Gellid defnyddio'r ffwythiant MsgBox yn y mannau pwysicaf yn eich ffwythiant personol i reoli sut mae'r gwerthoedd newidynnau unigol. Gall blychau negeseuon fod yn ddefnyddiol iawn pan fydd gennych swyddogaeth fawr a llawer o gyfrifiannu. Yn yr achos hwn, bydd yn hawdd i chi benderfynu ym mha ran o'r cod mae'r gwall yn digwydd.
Pennu mannau stopio a pherfformio cam wrth gam
Gallwch ychwanegu torbwyntiau i'r cod o eich swyddogaeth lle bydd y gweithredu cod yn dod i ben. Felly gallwch chi ddilyn y broses gyfrifo gam wrth gam. Wrth wneud hynny, gallwch weld sut mae gwerthoedd y newidynnau yn newid.
I ychwanegu torbwynt, gosodwch y cyrchwr ar y llinell sy'n cynnwys y gosodiad lle rydych yn dewis seibio. Yna de-gliciwch a dewis Debug -> Toggle Breakpoint neu gwasgwch F9 . Gallwch hefyd glicio yn y man a ddymunir ar yr ardal lwyd fertigol i'r chwith o'r cod swyddogaeth.
Bydd cylch coch yn ymddangos, fel y gwelwch yn y sgrinlun isod. Mae llinell y cod lle bydd y cyfrifiad yn cael ei stopio wedi'i hamlygu mewn coch.
Nawr, bydd ffenestr golygydd VBA yn cael ei hagor pan fydd y ffwythiant yn rhedeg. Bydd y cyrchwr wedi'i leoli yn y man lle stopioch chi.
Os ydych chi'n hofran cyrchwr eich llygoden dros unrhyw un o'r newidynnau yn y cod ffwythiant, gallwch weld eu cerryntgwerth:
Pwyswch F5 i barhau â'r cyfrifiad.
Sylwch. Ar ôl y torbwynt, gallwch ddechrau olrhain cynnydd y cyfrifiadau gam wrth gam. Os pwyswch y botwm F8, dim ond un llinell nesaf o'r cod VBA fydd yn cael ei gweithredu. Bydd y llinell felen gyda saeth hefyd yn symud i'r safle cod gweithredu olaf.
Gan fod gweithrediad y ffwythiant wedi'i seibio eto, gallwch weld gwerthoedd cyfredol holl newidynnau'r ffwythiant gan ddefnyddio cyrchwr y llygoden.
Bydd gwasg nesaf F8 yn mynd â ni un cam ymlaen . Felly gallwch chi wasgu F8 tan ddiwedd y cyfrifiad. Neu gwasgwch F5 i barhau â'r cyfrifiad tan y torbwynt nesaf.
Os bydd gwall, bydd y cyrchwr yn cael ei stopio ar y pwynt yn y cod lle digwyddodd y gwall. A byddwch hefyd yn gweld neges gwall pop-up. Mae hyn yn ei gwneud hi'n hawdd canfod achos y broblem.
Bydd y torbwyntiau a nodwch yn cael eu defnyddio nes i chi gau'r ffeil. Pan fyddwch chi'n ei ailagor, bydd angen i chi eu gosod eto. Nid y dull mwyaf cyfleus, yn eich barn chi?
Fodd bynnag, gellir datrys y broblem hon. Mewnosodwch ddatganiad Stopio yn y cod swyddogaeth ar y pwyntiau angenrheidiol, a gallwch atal gweithrediad y rhaglen yn yr un modd ag wrth ddefnyddio torbwyntiau.
Pan fydd VBA yn dod ar draws datganiad Stop , bydd yn atal gweithrediad y rhaglen ac yn aros am eich gweithred. Gwiriwch werthoedd y newidynnau, ynapwyswch F5 i barhau.
Neu gwasgwch F8 i gyflawni'r ffwythiant cam-wrth-gam fel y disgrifir uchod.
Mae'r datganiad Stopio yn rhan o'r rhaglen ac felly mae heb ei ddileu, fel sy'n wir gyda thorbwynt. Pan fyddwch wedi gorffen dadfygio, tynnwch ef eich hun. Neu trowch ef yn sylw trwy ei ragflaenu gydag un dyfyniad (').
Dadfygio gan ddefnyddio gweithredwr Debug.Print
Gallwch osod y Debug.Print yn y cod swyddogaeth yn y lle iawn. Mae hyn yn ddefnyddiol ar gyfer gwirio gwerthoedd newidynnau sy'n newid yn gylchol.
Gallwch weld enghraifft o berfformiad Debug.Print ar y sgrinlun isod.
0>Datganiad Debug.Print i, mae vMax yn argraffu gwerthoedd a'u trefnolion.
Yn y ffenestr Ar unwaith fe welwch ddau rif (17 a 14) o'r amrediad dethol, sy'n cyfateb i'r terfynau gosod ac ymhlith y rhain bydd yr uchafswm yn cael ei ddewis. Mae Digidau 1 a 2 yn golygu bod y ffwythiant wedi cwblhau 2 gylchred lle dewiswyd y rhifau. Rydym yn gweld gwerthoedd y newidynnau pwysicaf, fel y gwnaethom yn gynharach gyda MsgBox . Ond ni ataliodd hyn y ffwythiant.
Ffonio ffwythiant o weithdrefn
Gallwch alw ffwythiant diffiniedig defnyddiwr nid o gell yn y daflen waith, ond o weithdrefn. Yn yr achos hwn, bydd yr holl wallau yn cael eu dangos yn ffenestr Visual Basic Editor.
Dyma sut y gallwch chi ffonio'r swyddogaeth a ddiffinnir gan y defnyddiwr GetMaxBerween o agweithdrefn:
Is-brawf() Dim x x = GetMaxBetween(Ystod ("A1:A6"), 10, 50) MsgBox(x) Diwedd IsGosodwch y cyrchwr unrhyw le yn y cod a gwasgwch F5 . Os nad oes gwall yn y ffwythiant, fe welwch ffenestr naid gyda chanlyniad y cyfrifiad.
> Rhag ofn y bydd gwall, fe welwch neges gyfatebol yn y golygydd VBA. Bydd y cyfrifiad yn cael ei stopio a bydd llinell y cod y digwyddodd y gwall ynddo yn cael ei amlygu mewn melyn. Gallwch chi adnabod yn hawdd ble a pham y digwyddodd y gwall.Dyna i gyd. Nawr eich bod wedi creu eich ychwanegiad eich hun, wedi'i ychwanegu at Excel a gallwch ddefnyddio'r UDF ynddo. Os ydych chi eisiau defnyddio mwy o UDFs, ysgrifennwch y cod yn y modiwl ychwanegu yn y golygydd VBA a'i gadw.
Dyna ni am heddiw. Rydym wedi ymdrin â gwahanol ffyrdd o ddadfygio swyddogaethau personol ac wedi dysgu sut i'w defnyddio yn eich llyfr gwaith. Rydym yn mawr obeithio y bydd y canllawiau hyn yn ddefnyddiol i chi. Os oes gennych unrhyw gwestiynau, ysgrifennwch y sylwadau i'r erthygl hon.