Excel UDF nach eil ag obair: duilgheadasan agus fuasglaidhean

  • Roinn Seo
Michael Brown

San artaigil seo, bheir sinn sùil air na cùisean a dh’ fhaodadh a bhith ort nuair a bhios tu a’ cleachdadh gnìomhan gnàthaichte anns na leabhraichean-obrach agad. Feuchaidh mi ri sealltainn dhut dè tha gan adhbharachadh agus dè cho furasta 's as urrainn dhaibh a bhith air am fuasgladh.

Seo na bhios sinn a' bruidhinn air:

    Na bu tràithe bhruidhinn sinn mu dheidhinn dè a Is e gnìomh àbhaisteach, mar a chruthaicheas tu agus a chleachdas tu e. Ma tha thu a’ faireachdainn gu bheil feum agad air an eòlas bunaiteach air UDFs ùrachadh ro-làimh, gabh fois agus coimhead tron ​​​​artaigil roimhe seo.

    Carson nach eil Excel UDF ag ath-àireamhachadh?

    Nuair a nì thu atharrachadh sam bith ann an an leabhar-obrach agad, cha bhith Excel ag ath-àireamhachadh gach foirmle a th’ agad an sin. Ùraichidh e na toraidhean airson na foirmlean sin a tha ceangailte ris na ceallan atharraichte a-mhàin.

    Ach tha seo a’ buntainn ri gnìomhan àbhaisteach Excel. A thaobh an fheadhainn àbhaisteach, chan urrainn dha Excel an còd VBA a dhearbhadh agus ceallan eile a chomharrachadh a dh’ fhaodadh buaidh a thoirt air toradh a ’ghnìomh àbhaisteach. Mar sin, dh'fhaoidte nach atharraich am foirmle àbhaisteach agad nuair a nì thu atharrachadh air an leabhar-obrach.

    Gus a' chùis a rèiteachadh, cha leig thu leas ach an aithris Application.Volatile a chleachdadh. Thoir sùil air an ath chaibideil gus an ionnsaich thu an stiùireadh ceum air cheum air mar a chleachdas tu e.

    Gnìomhan gnàthaichte luaineach vs neo-luaineach

    Gu gnàthach, chan eil gnìomhan gnàthaichte ann an Excel luaineach. Tha seo a’ ciallachadh nach tèid an UDF ath-àireamhachadh ach ma dh’atharraicheas luach gin de na ceallan air a bheil e a’ toirt iomradh. Ach ma tha cruth nan ceallan, ainm anduilleag-obrach, ainm an fhaidhle ag atharrachadh, agus mar sin cha tachair atharrachadh sam bith san UDF. Mar eisimpleir, feumaidh tu ainm an leabhair-obrach agad a sgrìobhadh sìos ann an cealla. Gus seo a dhèanamh, cruthaichidh tu gnìomh gnàthaichte:

    Enction WorkbookName() As String WorkbookName = Gnìomh Crìochnachaidh ThisWorkbook.Name

    Smaoinich a-nis air a’ chùis a leanas. Sgrìobh thu foirmle gnàthaichte =WorkbookName() a-steach don chill agus fhuair thu ainm an fhaidhle an sin. Ann an ùine ghoirid, chuir thu romhpa am faidhle ath-ainmeachadh agus shàbhail thu e le ainm eile. Ach bheir thu sùil air an luach sa chill agus chì thu nach eil e air atharrachadh. Tha seann ainm faidhle ann fhathast nach eil ceart tuilleadh.

    Leis nach eil argamaidean san ghnìomh seo, chan eil an gnìomh air ath-àireamhachadh (fiù ma dh'atharraicheas tu ainm an leabhair-obrach, dùin e is fosgail a-rithist an uairsin e).

    Thoir an aire. Gus na gnìomhan gu lèir san fhaidhle agad ath-àireamhachadh, faodaidh tu an ath-ghoirid Ctrl + Alt + F9 a chleachdadh.

    A bheil dòigh nas fhasa ann? Gus am bi am foirmle ag ath-àireamhachadh a h-uile uair a dh'atharraicheas an duilleag-obrach, feumaidh tu loidhne chòd a bharrachd. Cuir a-steach am pìos còd a leanas aig toiseach na h-obrach agad:

    Application.Volatile

    Mar sin, seallaidh an còd agad mar seo:

    Gnìomh WorkbookName() Mar String Application.Volatile WorkbookName = Gnìomh Deireannach ThisWorkbook.Name

    A-nis tha an UDF agad luaineach, mar sin thèid a ath-àireamhachadh gu fèin-obrachail ma tha ceal sam bith san duilleag-obrachair ath-àireamhachadh no air atharrachadh sam bith air an leabhar-obrach. Cho luath 's a dh'atharraicheas tu ainm an fhaidhle, chì thu an t-ùrachadh sin sa bhad.

    An aire. Thoir an aire gum faod cus ghnìomhan luaineach an Excel agad a lughdachadh. Às deidh na h-uile, tha cus ghnìomhan àbhaisteach ann a bhios a 'dèanamh àireamhachadh iom-fhillte agus ag obrachadh air raointean dàta mòr gu leantainneach.

    Mar sin, tha mi a' moladh gun cleachd thu luaineachd a-mhàin far a bheil fìor fheum air.

    Carson nach eil gnìomhan gnàthaichte rim faighinn

    Nuair a chuireas tu a-steach ciad litrichean ainm gnìomh gnàthaichte, nochdaidh e anns an liosta tuiteam-sìos ri taobh na cealla cuir a-steach, dìreach mar gnìomhan àbhaisteach Excel.

    Ach, chan eil seo a’ tachairt an-còmhnaidh. Dè na mearachdan a dh’ adhbharaicheas an suidheachadh seo?

    Ma tha Excel 2003-2007 agad, cha nochd an UDF air an liosta a-nuas. An sin chan fhaic thu ach gnìomhan àbhaisteach.

    Ach fiù 's ma tha thu a' cleachdadh tionndadh nas ùire de Excel, tha mearachd eile ann a dh' fhaodadh tu a dhèanamh gun fhiosta.

    Chì thu, feumaidh an gnìomh gnàthaichte a bhith ann an modal VBA àbhaisteach ris an canar Modules. Nuair a chuireas tu modal ùr ris gus an còd gnìomh a sgrìobhadh, thèid pasgan Modules a chruthachadh gu fèin-obrachail anns a bheil a h-uile modal air a sgrìobhadh.

    Ach uaireannan bidh e a’ tachairt nach eil modal ùr ann. ga chruthachadh. Air an ath-sgrìn chì thu gu bheil an còd gnìomh àbhaisteach anns a’ mhodal “Microsoft Excel Objects” còmhla riAn Leabhar-obrach seo.

    Is e a’ phuing nach urrainn dhut gnìomh gnàthaichte a chuir ann an raon còd duilleag-obrach no leabhar-obrach. Anns a 'chùis seo, chan obraich an gnìomh. A bharrachd air an sin, cha nochd e anns an liosta tuiteam-sìos de ghnìomhan. Mar sin, bu chòir gum biodh an còd sa phasgan Modalan an-còmhnaidh.

    Chan eil teacsa cuideachaidh gnìomh gnàthaichte Excel ri fhaicinn

    Dh’ fhaodadh duilgheadas eile èirigh ’s e am sanas a chì thu nuair a chuireas tu a-steach e. gnìomh gnàthaichte. Ma chleachdas tu gnìomh àbhaisteach, chì thu an-còmhnaidh inneal airson a’ ghnìomh agus airson a h-argamaidean. Ach dè mu dheidhinn UDFn?

    Ma tha tòrr ghnìomhan gnàthaichte agad, bidh e air leth duilich dhut cuimhneachadh dè an àireamhachadh a bhios gach fear dhiubh a’ dèanamh. Bidh e eadhon nas duilghe cuimhneachadh dè na h-argamaidean a bu chòir a chleachdadh. Tha mi a’ smaoineachadh gum biodh e na dheagh bheachd cunntas a bhith agad air na gnìomhan àbhaisteach agad mar chuimhneachan.

    Airson seo, bhithinn a’ moladh an dòigh Application.MacroOptions a chleachdadh. Cuidichidh e thu le bhith a’ sealltainn an tuairisgeul chan ann a-mhàin air a’ ghnìomh ach cuideachd air gach argamaid aige ann an uinneag an Function Wizard. Chì thu an uinneag seo nuair a phutas tu am putan Fx sa bhàr fhoirmeil.

    Chì sinn mar a chuireas tu sanas mar seo ris na UDFs agad. Anns an artaigil roimhe thug sinn sùil air gnìomh gnàthaichte GetMaxBetween. Lorgaidh e an àireamh as motha anns an raon ainmichte agus gabhaidh e trì argamaidean: raon de luachan àireamhach, agus luach as àirde agus as ìsle gulorg.

    A-nis cuiridh sinn tuairisgeul ris a’ ghnìomh àbhaisteach seo. Gus seo a dhèanamh, cruthaich agus ruith an àithne Application.MacroOptions . Airson an gnìomh GetMaxBetween , faodaidh tu an àithne a leanas a ruith:

    Sub RegisterUDF () Dim strFuncName As String 'ainm a' ghnìomh a tha thu airson a chlàradh Dim strDescr As String' tuairisgeul air a' ghnìomh fhèin Dim strArgs () Mar String 'tuairisgeul air argamaidean gnìomh' Clàraich gnìomh GetMaxBetween ReDim strArgs (1 Gu 3) 'Àireamh argamaidean san ghnìomh agad strFuncName = "GetMaxBetween" strDescr = "An àireamh as motha san raon ainmichte" strArgs (1) = "Raon de luachan àireamhach" strArgs (2) = " Crìoch eadar-ama nas ìsle " strArgs (3) = " Crìoch eadar-amail àrd " Application.MacroOptions Macro: = strFuncName, _ Description: = strDescr, _ ArgumentDescriptions: = strArgs, _ Category: = " Na gnìomhan gnàthaichte agam " Crìoch fo

    no

    Fo-chlàrUDF () Application.MacroOptions Macro: = "GetMaxBetween" , _ Description: = "An àireamh as motha san raon ainmichte" , _ Roinn: = "Mo Gnìomhan gnàthaichte", _ ArgumentDescriptions: = Eagrachadh (_ "Raon luachan àireamhach", , _ "Bor eadar-ama nas ìsle der", _ "Crìoch eadar-ama àrd" ) Deireadh Fo

    Caochlaideach str FuncName ainm na gnìomh. strDescr - tuairisgeul gnìomh. Tha sanasan anns na caochladairean strArgs airson gach argamaid.

    S dòcha gum bi iongnadh ort dè a tha sa cheathramh argamaid ris.Application.MacroOptions. Tha an argamaid roghainneil seo air ainmeachadh mar Roinn agus tha i a' sealltainn an clas de ghnìomhan Excel a thèid ar gnìomh GetMaxBetween () a chur a-steach. Faodaidh tu ainmeachadh às dèidh gin dhe na roinnean a th' ann mar-thà: Math & ; Trèigsinn, staitistigeil, loidsigeach, msaa. Faodaidh tu ainm a shònrachadh airson na roinne ùr anns an cuir thu na gnìomhan a chruthaicheas tu. Mura cleachd thu an argamaid Roinn-seòrsa, thèid an gnìomh gnàthaichte a chuir gu fèin-obrachail san roinn “Dearbhadh Cleachdaiche”.

    Cuir a-steach an còd gnìomh gu uinneag a’ mhodtail:

    1>

    An uairsin cliog air a’ phutan “Run”. Nì an àithne a h-uile suidheachadh airson a' phutan Fx a chleachdadh leis a' ghnìomh GetMaxBetween() agad.

    Ma dh'fheuchas tu ri gnìomh a chur a-steach do chill a' cleachdadh an gnìomh. 6>Insert Function inneal, chì thu gu bheil an gnìomh GetMaxBetween agad san roinn "Mo Ghnìomhan Gnàthaichte":

    Thu 's urrainn dhut dìreach tòiseachadh a' sgrìobhadh ainm a' ghnìomh a-steach don chill agus chì thu an gnìomh àbhaisteach agad anns an liosta a-nuas de ghnìomhan airson taghadh. leis a' phutan Fx.

    Gliocas. Faodaidh tu cuideachd am prìomh mheasgachadh CRTL + A a chleachdadh gus an Function Wizard fhosgladh.

    San uinneig Function Wizard chì thu tuairisgeul air an obair agad, cho math ri sanas airson a’ chiad argamaid. Ma chuireas tu an cursair agad thairis air andàrna no treas argamaid, chì thu sanasan air an son cuideachd.

    Ma tha thu airson teacsa nan sant seo atharrachadh, atharraich luachan nan strDescr agus strArgs caochladairean anns a’ chòd RegisterUDF () . An uairsin ruith an àithne RegisterUDF () a-rithist.

    Ma tha thu airson a h-uile suidheachadh a chaidh a dhèanamh a dhubhadh às agus an tuairisgeul gnìomh a ghlanadh, ruith an còd seo:

    Sub UnregisterUDF () Application.MacroOptions Macro: = "GetMaxBetween" , _ Description: = Falamh , ArgumentDescriptions: = Falamh , Roinn: = Fo-cheann falamh

    Tha dòigh eile ann airson sanas fhaighinn nuair a chuireas tu a-steach gnìomh gnàthaichte. Cuir a-steach ainm na gnìomh agus an uairsin brùth air Ctrl + Shift + A :

    =GetMaxBetween( + Ctrl + Shift + A

    Chì thu liosta de na h-argamaidean aig a’ ghnìomh gu lèir:

    Gu mì-fhortanach, an seo chan fhaic thu tuairisgeul na h-obrach agus na h-argamaidean aice. Ach ma tha ainmean nan argamaidean gu math fiosrachail, mar sin dh’ fhaodadh iad a bhith cuideachail cuideachd. Ach, tha e nas fheàrr na dad :)

    Bheir e beagan a bharrachd obrach gus tuigse a chruthachadh airson UDFn a tha ag obair mar ghnìomhan àbhaisteach Excel. Gu mì-fhortanach, chan eil Microsoft a’ toirt seachad roghainnean sam bith. Is e an aon fhuasgladh a tha ri fhaighinn an-dràsta leudachadh Excel-DNA IntelliSense. Gheibh thu barrachd fiosrachaidh air làrach-lìn an leasaiche.

    Tha sinn an dòchas gun cuidich an stiùireadh seo thu gus fuasgladh fhaighinn air duilgheadasan nuair nach obraich an gnìomh àbhaisteach agad no nuair nach obraich e.obair mar a thogras tu. Ach, ma dh’ fhailicheas an UDF agad ag obair fhathast, thoir cunntas mionaideach air a’ chùis agad anns an earrann Beachdan. Feuchaidh sinn ri obrachadh a-mach agus am fuasgladh a lorg dhut ;)

    Tha Mìcheal Brown dèidheil air teicneòlas sònraichte le dìoghras airson pròiseasan iom-fhillte a dhèanamh nas sìmplidhe a’ cleachdadh innealan bathar-bog. Le còrr air deich bliadhna de eòlas anns a’ ghnìomhachas teignigeach, tha e air urram a thoirt dha na sgilean aige ann am Microsoft Excel agus Outlook, a bharrachd air Google Sheets agus Docs. Tha blog Mhìcheil gu sònraichte airson a chuid eòlais agus eòlais a cho-roinn le daoine eile, a’ toirt seachad molaidhean agus clasaichean-oideachaidh a tha furasta a leantainn airson cinneasachd agus èifeachdas a leasachadh. Ge bith co-dhiù a tha thu nad neach-proifeiseanta eòlach no nad neach-tòiseachaidh, tha blog Mhìcheal a 'tabhann lèirsinn luachmhor agus comhairle phractaigeach airson a bhith a' faighinn a 'chuid as fheàrr às na h-innealan bathar-bog riatanach sin.