Clàr-innse
Leis gu bheil fios agad mu thràth mar a chruthaicheas tu UDFn (agus, tha mi an dòchas, tha thu cuideachd air feuchainn riutha a chuir an sàs san Excel agad), cladhach sinn beagan nas doimhne agus chì sinn dè ghabhas dèanamh air eagal ‘s nach obraich an gnìomh comharraichte cleachdaiche agad.
Gus fuasgladh fhaighinn air cuid de chùisean nuair a chruthaicheas tu gnìomh gnàthaichte, is coltaiche gum feum thu deasbaid a ruith. Faodaidh tu a bhith cinnteach gu bheil an gnìomh ag obair mar bu chòir.
Rannsaichidh sinn na dòighean deasbaid a leanas:
Nuair a chruthaicheas tu gnìomh gnàthaichte, bidh cothrom ann an-còmhnaidh gu'n dean thu mearachd. Mar as trice tha gnìomhan gnàthaichte gu math iom-fhillte. Agus chan eil iad daonnan a 'tòiseachadh ag obair ceart anns a' bhad. Dh’fhaoidte gun till am foirmle air ais toradh ceàrr no an #VALUE! mearachd. Eu-coltach ri gnìomhan àbhaisteach Excel, chan fhaic thu teachdaireachdan sam bith eile.
A bheil dòigh ann a dhol tro ghnìomh gnàthaichte ceum air cheum gus dearbhadh mar a tha gach aithris ag obair? Seadh! Tha dì-bhugachadh ga chleachdadh airson seo.
Nì mi grunn dhòighean air an gnìomh gnàthaichte agad a dhì-bhugachadh gus an urrainn dhut am fear a tha ag obair dhut a thaghadh.
Mar eisimpleir, cleachdaidh sinn an gnìomh gnàthaichte GetMaxBetween bho aon de na h-artaigilean a bh’ againn roimhe a bhios a’ tomhas an àireamh as motha anns an raon luachan ainmichte:
Gnìomh GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i Mar Integer ReDim ArrNums(rngCells.Count) Airson gach ÀireamhRange Ann an rngCells vMax =NumRange Tagh Cùis vMax Case MinNum + 0.01 Gu MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Cùis Eile GetMaxBetween = 0 Deireadh Tagh An ath àireamh Raon GetMaxBetween = Duilleag-obrachFunction.Max(arrNums) Is e an gnìomh argamaid crìochnachaidhraon de cheallan far a bheil àireamhan air an sgrìobhadh, a bharrachd air a’ chrìoch àrd is ìosal de luachan.
Cuir an gnìomh MsgBox ann an àiteachan cudromach
Gus sùil a chumail air coileanadh àireamhachadh, ’s urrainn dhut a thaisbeanadh luachan nan caochladairean as cudromaiche air an sgrion anns na h-àiteachan ceart. 'S urrainn dhut seo a dhèanamh le bhith a' cleachdadh priob-bhogsaichean deasbaid.
'S e bogsa deasbaid a th' ann am MsgBox a chleachdas tu gus teachdaireachd de sheòrsa air choreigin a shealltainn dhan chleachdaiche.
Co-chàradh msgBox coltach ri gnìomhan VBA eile:
Tha MsgBox (brosnaich [, putanan] [, tiotal] [, faidhle cuideachaidh, co-theacsa])brosnachadh na argamaid riatanach. Tha an teachdaireachd a chì thu sa bhogsa deasbaid ann. Gabhaidh a chleachdadh cuideachd gus luachan nan caochladairean fa leth a thaisbeanadh.
Tha na h-argamaidean eile gu lèir roghainneil.
[ putanan ] - a' dearbhadh dè na putanan is na h-ìomhaigheagan a tha ann. air a thaisbeanadh sa MsgBox . Mar eisimpleir, ma chleachdas sinn an roghainn vbOkOnly , cha tèid ach am putan OK a thaisbeanadh. Fiù 's nan do chaill thu an argamaid seo, 's e am putan seo a chleachdadh a ghnàth.
[ title ] - an seo 's urrainn dhut tiotal bogsa na teachdaireachd a shònrachadh.
Tionndaidhidh sinn o faclan airson a chleachdadh agus tòiseachadh air debugging. Gus taisbeanadh anteachdaireachd, cuir an loidhne a leanas ri còd na gnìomh GetMaxBetween a tha air a mhìneachadh leis a' chleachdaiche ron ghnìomhaiche Cùis Eile :
MsgBox vMax,, "Count -" & iSeo na gheibh sinn san toradh:
Gnìomh GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) Airson gach àireamh raon ann an rngCells vMax = ÀireamhRange Tagh Cùis vMax Case MinNum + 0.01 Gu MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Count -" & i Cùis Eile GetMaxBetween = 0 Deireadh Tagh An ath-NumRange GetMaxBetween = Duilleag-obrachFunction.Max(arrNums) Gnìomh DeireannachA’ cleachdadh an caochladair vMax sa bhogsa deasbaid, chì sinn dè na h-àireamhan a choinnicheas na slatan-tomhais airson taghadh, mar sin gun urrainn dhuinn am fear as motha dhiubh a thaghadh. Leis an abairt "Cunnt -" & I anns a’ bhàr tiotail, bidh sinn a’ comharrachadh cia mheud àireamh a thagh sinn mu thràth gus an luach as àirde a dhearbhadh. Thèid an cuntair àrdachadh le gach luach ùr.
Nuair a bhios an seata UDF againn, cuiridh sinn an fhoirmle gu h-ìosal an sàs san raon cinn-latha:
= GetMaxBetween (A1:A6,10,50)
An dèidh a’ phutan Enter air a bhrùthadh, chì thu teachdaireachd mar a chithear san dealbh gu h-ìosal:
Seo a’ chiad àireamh san raon A1: A6 a choinnicheas na slatan-tomhais: nas motha na 10 ach nas lugha na 50.
An dèidh dhut briogadh air OK, nochdaidh dàrna teachdaireachd leis an àireamh 14. Chan eil an còrr dhe na h-àireamhan a' freagairt ris an taghadhslatan-tomhais. Mar sin, bidh an gnìomh a’ dol a-mach agus a’ tilleadh am fear as motha den dà luach, 17.
Faodaidh an gnìomh MsgBox a chleachdadh anns na h-àiteachan as cudromaiche sa ghnìomh àbhaisteach agad gus smachd a chumail air mar a tha na luachan atharrachadh fa leth caochladairean. Faodaidh bogsaichean teachdaireachd a bhith glè fheumail nuair a tha gnìomh mòr agad agus tòrr àireamhachadh. Anns a' chùis seo, bidh e furasta dhut faighinn a-mach dè am pàirt den chòd a tha a' mhearachd a' tachairt.
Sònraich puingean stad agus dèan ceum air cheum
'S urrainn dhut puingean-briseadh a chur ris a' chòd de an gnìomh agad far an stadadh cur an gnìomh còd. Mar sin faodaidh tu am pròiseas àireamhachaidh a leantainn ceum air cheum. Le bhith a' dèanamh seo, chì thu mar a tha luachan nan caochladairean ag atharrachadh.
Gus puing-briseadh a chur ris, cuir an cursair air an loidhne anns a bheil an aithris far an roghnaich thu stad. An uairsin dèan briogadh deas agus tagh Debug -> Toggle Breakpoint no dìreach brùth F9 . Faodaidh tu cuideachd briogadh san àite a tha thu ag iarraidh air an raon liath dhìreach air taobh clì a’ chòd gnìomh.
Nochdaidh cearcall dearg, mar a chì thu san dealbh-sgrìn gu h-ìosal. Tha loidhne a' chòd far an tèid an àireamhachadh a stad air a shoilleireachadh ann an dearg.
A-nis, thèid uinneag deasaiche VBA fhosgladh nuair a bhios an gnìomh a' ruith. Bidh an cursair suidhichte aig an àite far an do stad thu.
Ma chuireas tu cùrsair na luchaige thairis air caochladairean ann an còd na h-obrach, chì thu an sruth acaluach:
Brùth F5 gus leantainn air adhart leis an àireamhachadh.
An aire. Às deidh a ’phuing briseadh, faodaidh tu tòiseachadh a’ cumail sùil air adhartas an àireamhachaidh ceum air cheum. Ma bhrùthas tu am putan F8, cha tèid ach aon ath loidhne den chòd VBA a chuir gu bàs. Gluaisidh an loidhne bhuidhe le saighead cuideachd chun t-suidheachadh còd mu dheireadh a chaidh a chuir gu bàs.
Leis gu bheil coileanadh na h-obrach air a stad a-rithist, 's urrainn dhut luachan làithreach nan caochladairean air fad den ghnìomh fhaicinn le cursair na luchaige.
Bheir an ath bhrùthadh aig F8 aon cheum air adhart sinn . Mar sin faodaidh tu F8 a bhrùthadh gu deireadh an àireamhachaidh. No brùth F5 gus leantainn air adhart leis an àireamhachadh gus an ath phuing-bhriseadh.
Ma thachras mearachd, thèid stad a chur air a' chursair aig a' phuing sa chòd far an do thachair a' mhearachd. Agus chì thu teachdaireachd mearachd pop-up cuideachd. Nì seo e furasta adhbhar na trioblaid a dhearbhadh.
Thèid na puingean brisidh a shònraicheas tu a chur an sàs gus an dùin thu am faidhle. Nuair a dh’ fhosglas tu a-rithist e, feumaidh tu an suidheachadh a-rithist. Nach e an dòigh as freagarraiche, nach eil thu a’ smaoineachadh?
Ach, faodar an duilgheadas seo fhuasgladh. Cuir a-steach aithris Stop a-steach don chòd gnìomh aig na puingean riatanach, agus 's urrainn dhut stad a chur air coileanadh a' phrògraim san aon dòigh 's nuair a bhios tu a' cleachdadh puingean brisidh.
Nuair a choinnicheas VBA ri aithris Stop , cuiridh e stad air cur an gnìomh a’ phrògraim agus feitheamaid ri do ghnìomh. Thoir sùil air luachan nan caochladairean, an uairsinbrùth F5 gus leantainn air adhart.
No brùth F8 gus an gnìomh a choileanadh ceum air cheum mar a chaidh a mhìneachadh gu h-àrd.
Tha an aithris Stop mar phàirt dhen phrògram agus mar sin tha e gun a bhith air a dhubhadh às, mar a tha fìor le puing briseadh. Nuair a bhios tu deiseil debugging, thoir air falbh e thu fhèin. No tionndaidh gu beachd e le bhith a' cur aon fhacal roimhe (').
Debugging a' cleachdadh a' ghnìomhaiche Debug.Print
'S urrainn dhut an Debug.Print a chur a-steach an còd gnìomh san àite cheart. Tha seo feumail airson sùil a thoirt air luachan nan caochladairean a tha ag atharrachadh gu cuairteach.
Chì thu eisimpleir de choileanadh Debug.Print air an sgrìn gu h-ìosal.
Aithris Debug.Print i, bidh vMax a’ clò-bhualadh luachan agus na h-àireamhan òrdail aca.
San uinneag sa bhad chì thu dà àireamh (17 agus 14) bhon raon taghte, a fhreagras air an crìochan suidhichte agus am measg sin thèid an ìre as àirde a thaghadh. Tha àireamhan 1 agus 2 a’ ciallachadh gu bheil an gnìomh air 2 chearcall a chrìochnachadh anns an deach na h-àireamhan a thaghadh. Chì sinn luachan nan caochladairean as cudromaiche, mar a rinn sinn na bu thràithe le MsgBox . Ach cha do chuir seo stad air a' ghnìomh.
Cuir fòn gu gnìomh o mhodh-obrach
'S urrainn dhut gnìomh comharraichte cleachdaiche a ghairm chan ann bho chill san duilleag-obrach, ach bho mhodh-obrach. Anns a' chùis seo, thèid a h-uile mearachd a shealltainn ann an uinneag an deasaiche Visual Basic.
Seo mar a dh'fhaodas tu fios a chur gu gnìomh a tha comharraichte leis a' chleachdaiche GetMaxBerween bho amodh-obrach:
Fo-dheuchainn() Dim x x = GetMaxBetween(Raon ("A1:A6")), 10, 50) MsgBox(x) Crìoch foSuidhich an cursair an àite sam bith sa chòd agus brùth F5 . Mura h-eil mearachd san ghnìomh, chì thu uinneag pop-up leis an toradh àireamhachaidh.
Ma tha mearachd ann, chì thu teachdaireachd co-fhreagarrach san deasaiche VBA. Thèid stad a chuir air an àireamhachadh agus thèid an loidhne còd anns an do thachair a’ mhearachd a chomharrachadh ann am buidhe. 'S urrainn dhut innse gu furasta càite agus carson a thachair a' mhearachd.
Sin e. A-nis gu bheil thu air an tuilleadan agad fhèin a chruthachadh, air a chuir ri Excel agus faodaidh tu an UDF a chleachdadh ann. Ma tha thu airson barrachd UDF a chleachdadh, dìreach sgrìobh an còd sa mhodal tuilleadain ann an deasaiche VBA agus sàbhail e.
Sin e airson an-diugh. Tha sinn air diofar dhòighean a chòmhdach gus gnìomhan gnàthaichte a dhì-bhugachadh agus dh'ionnsaich sinn mar a chleachdas tu iad san leabhar-obrach agad. Tha sinn gu mòr an dòchas gum bi an stiùireadh seo feumail dhut. Ma tha ceist sam bith agad, sgrìobh na beachdan san artaigil seo.