Мазмұны
Сіз UDF файлдарын қалай жасау керектігін бұрыннан білетіндіктен (және, сіз оларды Excel бағдарламасында қолдануға тырыстыңыз деп үміттенемін), сәл тереңірек зерттеп көрейік және пайдаланушы анықтаған функция жұмыс істемеген жағдайда не істеуге болатынын көрейік.
Теңшелетін функцияны жасау кезінде кейбір мәселелерді шешу үшін, ең алдымен, жөндеуді іске қосу қажет болады. Содан кейін функцияның дұрыс жұмыс істеп жатқанына сенімді бола аласыз.
Біз келесі жөндеу әдістерін зерттейміз:
Теңшелетін функцияны жасаған кезде әрқашан мүмкіндік бар. сіз қателесесіз. Пайдаланушы функциялары әдетте өте күрделі. Және олар әрқашан дұрыс жұмысқа бірден кірісе бермейді. Формула қате нәтиже немесе #VALUE! қате. Стандартты Excel функцияларынан айырмашылығы, сіз басқа хабарларды көрмейсіз.
Оның әрбір мәлімдемесі қалай жұмыс істейтінін тексеру үшін реттелетін функцияны кезең-кезеңімен өту жолы бар ма? Әрине! Бұл үшін жөндеу қолданылады.
Мен сізге теңшелетін функцияны жөндеудің бірнеше әдісін ұсынамын, осылайша сіз өзіңізге қолайлысын таңдай аласыз.
Мысал ретінде біз теңшелетін функцияны қолданамыз. Көрсетілген мәндер ауқымындағы максималды санды есептейтін алдыңғы мақалаларымыздың бірінен GetMaxBetween :
Функция GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i Integer ReDim arrNums(rngCells.Count) ретінде rngCells ішіндегі әрбір сан аралығы үшін vMax =NumRange Select Case vMax Case MinNum + 0,01 to MaxNum - 0,01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End Келесі NumRange GetMaxBetween таңдаңыз = WorksheetFunction.Max(Function Function.Max(Functions Functions) сандар жазылатын ұяшықтар диапазоны, сондай-ақ мәндердің жоғарғы және төменгі шегі.MsgBox функциясын маңызды орындарға орналастырыңыз
Есептеулердің орындалуын бақылау үшін экранға шығаруға болады. экрандағы ең маңызды айнымалылардың мәндерін дұрыс жерлерде. Мұны қалқымалы диалогтық терезелер арқылы жасауға болады.
MsgBox — пайдаланушыға хабардың қандай да бір түрін көрсету үшін пайдалануға болатын диалогтық терезе.
MsgBox синтаксисі басқа VBA функцияларына ұқсас:
MsgBox(шақыру [, түймелер] [, тақырып] [, анықтама файлы, мәтінмән])шақыру - қажетті аргумент. Ол диалогтық терезеде көретін хабарды қамтиды. Оны жеке айнымалылардың мәндерін көрсету үшін де пайдалануға болады.
Барлық басқа аргументтер міндетті емес.
[ түймелер ] - қай түймелер мен белгішелер екенін анықтайды. MsgBox ішінде көрсетіледі. Мысалы, vbOkOnly опциясын пайдалансақ, онда тек OK түймесі көрсетіледі. Бұл аргументті өткізіп алсаңыз да, бұл түйме әдепкі бойынша пайдаланылады.
[ тақырып ] - бұл жерде хабар өрісінің тақырыбын көрсетуге болады.
Келіңіздер, келесіден ауысайық. жаттықтыру және жөндеуді бастау үшін сөздер. көрсету үшінхабарда, Case Else операторының алдында GetMaxBetween пайдаланушы анықтайтын функцияның кодына келесі жолды қосыңыз:
MsgBox vMax,, "Санау -" & iНәтижеде біз мынаны аламыз:
Функция GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.) Әрбір NumRange In rngCells үшін vMax = NumRange Case vMax Case MinNum + 0,01 to MaxNum - 0,01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Санау -" & i Case Else GetMaxBetween = 0 End Таңдау Келесі NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) Аяқтау функциясыДиалогтық терезедегі vMax айнымалы мәнін пайдалану арқылы біз таңдау критерийлеріне қай сандар сәйкес келетінін көреміз, сондықтан олардың ең үлкенін таңдай аламыз. "Санау -" өрнегімен & Мен тақырып жолағында максималды мәнді анықтау үшін қанша сан таңдағанымызды көрсетеміз. Есептегіш әрбір жаңа мән сайын ұлғайтылады.
UDF орнатқаннан кейін біз төмендегі формуланы күндер ауқымына қолданамыз:
= GetMaxBetween (A1:A6,10,50)
Енгізу түймешігінен кейін басылғанда, төмендегі скриншоттағыдай хабарды көресіз:
Бұл A1: A6 ауқымындағы критерийлерге сәйкес келетін бірінші сан: 10-нан көп, бірақ аз 50-ден жоғары.
Жарайды басқаннан кейін 14 саны бар екінші хабарлама пайда болады. Қалған сандар таңдауға сәйкес келмейді.критерийлері. Демек, функция екі мәннің ең үлкенін шығарады және қайтарады, 17.
MsgBox функциясы мәндердің қалай өзгеретінін басқару үшін теңшелетін функцияның ең маңызды орындарында пайдаланылуы мүмкін. жеке айнымалылардың өзгеруі. Хабарлама жолақтары үлкен функция және көп есептеулер болған кезде өте пайдалы болуы мүмкін. Бұл жағдайда кодтың қай бөлігінде қате орын алғанын анықтау оңай болады.
Тоқтау нүктелерін анықтап, қадам бойынша орындаңыз
Сіз кодқа тоқтау нүктелерін қоса аласыз. кодтың орындалуы тоқтатылатын функцияңыз. Осылайша сіз есептеу процесін кезең-кезеңмен қадағалай аласыз. Бұл ретте айнымалы мәндердің қалай өзгеретінін көруге болады.
Тоқтау нүктесін қосу үшін курсорды кідіртуді таңдаған мәлімдемені қамтитын жолға қойыңыз. Содан кейін тінтуірдің оң жақ түймешігін басып, Debug -> Breakpoint ауыстырыңыз немесе жай ғана F9 пернесін басыңыз. Сондай-ақ, функция кодының сол жағындағы тік сұр аймақта қажетті орынды нұқуға болады.
Төмендегі скриншотта көріп тұрғаныңыздай, қызыл шеңбер пайда болады. Есептеу тоқтатылатын код жолы қызыл түспен бөлектелген.
Енді функция іске қосылғанда VBA редакторының терезесі ашылады. Курсор сіз тоқтаған жерде орналасады.
Егер тінтуір курсорын функция кодындағы айнымалылардың кез келгеніне апарсаңыз, олардың ағымдағы мәнін көре аласыз.мән:
Есептеуді жалғастыру үшін F5 пернесін басыңыз.
Ескертпе. Тоқтау нүктесінен кейін есептеулердің орындалу барысын қадам бойынша бақылауды бастауға болады. F8 түймесін бассаңыз, VBA кодының тек бір келесі жолы орындалады. Көрсеткі бар сары жол да соңғы орындалған код орнына жылжиды.
Функцияның орындалуы қайта кідіртілгендіктен, тінтуір курсорын пайдаланып функцияның барлық айнымалыларының ағымдағы мәндерін көруге болады.
F8 пернесін келесі басу бізді бір қадам алға жылжытады. . Сондықтан F8 пернесін есептеудің соңына дейін басуға болады. Немесе келесі тоқтау нүктесіне дейін есептеуді жалғастыру үшін F5 пернесін басыңыз.
Егер қате орын алса, курсор кодтың қате орын алған нүктесінде тоқтатылады. Сондай-ақ қалқымалы қате туралы хабарды көресіз. Бұл мәселенің себебін анықтауды жеңілдетеді.
Сіз көрсеткен тоқтау нүктелері файл жабылмайынша қолданылады. Оны қайта ашқанда, оларды қайта орнату қажет болады. Ең қолайлы әдіс емес, қалай ойлайсыз?
Алайда бұл мәселені шешуге болады. Функция кодына қажетті нүктелерде Тоқта операторын енгізіңіз, сонда сіз тоқтау нүктелерін пайдаланған кездегідей бағдарламаның орындалуын тоқтата аласыз.
VBA Тоқта мәлімдемесіне тап болғанда, ол бағдарламаның орындалуын тоқтатады және әрекетіңізді күтеді. Содан кейін айнымалылардың мәндерін тексеріңізжалғастыру үшін F5 пернесін басыңыз.
Немесе жоғарыда сипатталғандай функцияны қадамдық орындау үшін F8 пернесін басыңыз.
Тоқта операторы бағдарламаның бөлігі болып табылады, сондықтан тоқтау нүктесі сияқты жойылмайды. Түзетуді аяқтаған кезде, оны өзіңіз жойыңыз. Немесе алдына бір тырнақша (') қою арқылы оны түсініктемеге айналдырыңыз.
Debug.Print операторын пайдаланып жөндеу
Сіз Debug.Print файлын функция коды дұрыс жерде. Бұл циклдік өзгеретін айнымалы мәндерді тексеру үшін пайдалы.
Төмендегі скриншотта Debug.Print өнімділігінің мысалын көре аласыз.
Мөлшері Debug.Print i, vMax мәндерді және олардың реттік сандарын басып шығарады.
Жедел терезеде сіз таңдалған ауқымнан екі санды (17 және 14) көресіз, ол келесі мәнге сәйкес келеді. шектеулерді орнатыңыз және олардың арасында максимум таңдалады. 1 және 2 сандар функцияның сандар таңдалған 2 циклды аяқтағанын білдіреді. Біз ең маңызды айнымалылардың мәндерін көреміз, бұрын MsgBox жасағандай. Бірақ бұл функцияны тоқтатпады.
Функцияны процедурадан шақыру
Пайдаланушы анықтаған функцияны жұмыс парағындағы ұяшықтан емес, процедурадан шақыруға болады. Бұл жағдайда барлық қателер Visual Basic өңдегішінің терезесінде көрсетіледі.
Міне, пайдаланушы анықтайтын GetMaxBerween функциясын мына жерден шақыруға болады.процедура:
Sub Test() Dim x x = GetMaxBetween(Ауқым ( "A1:A6" ), 10, 50) MsgBox(x) End SubМеңзерді кодтың кез келген жеріне орналастырып, F5 пернесін басыңыз. Функцияда қате болмаса, сіз есептеу нәтижесі бар қалқымалы терезені көресіз.
Қате болған жағдайда VBA редакторында сәйкес хабарламаны көресіз. Есептеу тоқтатылады және қате орын алған код жолы сары түспен бөлектеледі. Қатенің қай жерде және неліктен орын алғанын оңай анықтауға болады.
Барлығы осы. Енді сіз өзіңіздің қондырмаңызды жасадыңыз, оны Excel бағдарламасына қостыңыз және онда UDF пайдалана аласыз. Егер сіз көбірек UDF қолданғыңыз келсе, VBA редакторындағы қондырма модуліне кодты жазып, оны сақтаңыз.
Бүгінгі күні солай. Біз теңшелетін функцияларды жөндеудің әртүрлі жолдарын қарастырдық және оларды жұмыс кітабында қалай пайдалану керектігін білдік. Бұл нұсқаулар сізге пайдалы деп үміттенеміз. Егер сізде сұрақтар туындаса, осы мақалаға түсініктемелерде жазыңыз.