Სარჩევი
როგორც თქვენ უკვე იცით, როგორ შექმნათ UDF-ები (და, იმედი მაქვს, თქვენც სცადეთ მათი გამოყენება თქვენს Excel-ში), მოდით, ჩავუღრმავდეთ და ვნახოთ, რა შეიძლება გაკეთდეს იმ შემთხვევაში, თუ მომხმარებლის მიერ განსაზღვრული ფუნქცია არ მუშაობს.
მორგებული ფუნქციის შექმნისას ზოგიერთი პრობლემის გადასაჭრელად, დიდი ალბათობით დაგჭირდებათ გამართვის გამართვა. შემდეგ შეგიძლიათ დარწმუნდეთ, რომ ფუნქცია სწორად მუშაობს.
ჩვენ შევისწავლით გამართვის შემდეგ ტექნიკას:
როდესაც თქვენ შექმნით მორგებულ ფუნქციას, ყოველთვის არის შესაძლებლობა რომ შეცდომას დაუშვებ. მორგებული ფუნქციები, როგორც წესი, საკმაოდ რთულია. და ისინი ყოველთვის არ იწყებენ სწორად მუშაობას მაშინვე. ფორმულამ შეიძლება დააბრუნოს არასწორი შედეგი ან #VALUE! შეცდომა. Excel-ის სტანდარტული ფუნქციებისგან განსხვავებით, თქვენ ვერ ნახავთ სხვა შეტყობინებებს.
არსებობს თუ არა გზა, რომ გაიაროთ მორგებული ფუნქცია ეტაპობრივად, რათა შეამოწმოთ როგორ მუშაობს მისი თითოეული განცხადება? რა თქმა უნდა! ამისთვის გამოიყენება ხარვეზების გამართვა.
მე შემოგთავაზებთ რამდენიმე გზას თქვენი მორგებული ფუნქციის გამართვის მიზნით, რათა აირჩიოთ ის, რომელიც თქვენთვის მუშაობს.
მაგალითად, ჩვენ ვიყენებთ მორგებულ ფუნქციას. GetMaxBetween ჩვენი ერთ-ერთი წინა სტატიიდან, რომელიც ითვლის მაქსიმალურ რიცხვს მნიშვნელობების მითითებულ დიაპაზონში:
ფუნქცია GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange როგორც Range Dim vMax Dim arrNums() Dim i როგორც მთელი რიცხვი ReDim arrNums(rngCells.Count) თითოეული NumRange-ისთვის rngCells vMax =NumRange აირჩიეთ Case vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums(i) = vMax i = i + 1 სხვა შემთხვევაში GetMaxBetween = 0 ბოლოს აირჩიეთ შემდეგი NumRange GetMaxBetween = WorksheetFunction.Max(arnctions ფუნქცია არის ბოლო არგუმენტი <0) უჯრედების დიაპაზონი, სადაც იწერება რიცხვები, ასევე მნიშვნელობების ზედა და ქვედა ზღვარი.განათავსეთ MsgBox ფუნქცია მნიშვნელოვან ადგილებში
იმისათვის, რომ აკონტროლოთ გამოთვლების შესრულება, შეგიძლიათ აჩვენოთ ეკრანზე ყველაზე მნიშვნელოვანი ცვლადების მნიშვნელობები სწორ ადგილებში. ეს შეიძლება გაკეთდეს ამომხტარი დიალოგური ფანჯრების გამოყენებით.
MsgBox არის დიალოგური ფანჯარა, რომელიც შეგიძლიათ გამოიყენოთ მომხმარებლისთვის რაიმე სახის შეტყობინების საჩვენებლად.
MsgBox-ის სინტაქსი მსგავსია სხვა VBA ფუნქციებისა:
MsgBox(მოთხოვნა [, ღილაკები] [, სათაური] [, helpfile, კონტექსტი])მოთხოვნა აუცილებელი არგუმენტია. ის შეიცავს შეტყობინებას, რომელსაც ხედავთ დიალოგურ ფანჯარაში. ის ასევე შეიძლება გამოყენებულ იქნას ცალკეული ცვლადების მნიშვნელობების საჩვენებლად.
ყველა სხვა არგუმენტი არჩევითია.
[ ღილაკები ] - განსაზღვრავს რომელი ღილაკები და ხატებია. ნაჩვენებია MsgBox . მაგალითად, თუ გამოვიყენებთ ოფციას vbOkOnly , მაშინ გამოჩნდება მხოლოდ ღილაკი OK . მაშინაც კი, თუ ეს არგუმენტი გამოტოვეთ, ეს ღილაკი ნაგულისხმევად გამოიყენება.
[ სათაური ] - აქ შეგიძლიათ მიუთითოთ შეტყობინების ველის სათაური.
მოდით გადავიტანოთ სიტყვები სავარჯიშო და დაიწყოს გამართვა. საჩვენებლადშეტყობინება, დაამატეთ შემდეგი ხაზი მომხმარებლის მიერ განსაზღვრული GetMaxBetween ფუნქციის კოდს Case Else ოპერატორამდე:
MsgBox vMax,, "Count -" & iაი რას მივიღებთ შედეგად:
ფუნქცია GetMaxBetween(rngCells როგორც დიაპაზონი, MinNum, MaxNum) Dim NumRange როგორც დიაპაზონი Dim vMax Dim arrNums() Dim i როგორც მთელი რიცხვი ReDim arrNums(rngCells.Count) თითოეული NumRange-ისთვის rngCells-ში vMax = NumRange აირჩიეთ Case vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Count -" & სხვა შემთხვევაში GetMaxBetween = 0 ბოლოს აირჩიეთ შემდეგი NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) End ფუნქციადიალოგურ ფანჯარაში vMax ცვლადის გამოყენებით, ჩვენ ვნახავთ, რომელი რიცხვები აკმაყოფილებენ შერჩევის კრიტერიუმებს, ასე რომ. რომ მათგან ყველაზე დიდი შევარჩიოთ. გამოთქმით "Count -" & I სათაურის ზოლში, ჩვენ მივუთითებთ რამდენი რიცხვი უკვე შევარჩიეთ მაქსიმალური მნიშვნელობის დასადგენად. მრიცხველი გაიზრდება ყოველი ახალი მნიშვნელობით.
როგორც ჩვენ დავაყენებთ ჩვენს UDF-ს, ჩვენ ვიყენებთ ქვემოთ მოცემულ ფორმულას თარიღის დიაპაზონში:
= GetMaxBetween (A1:A6,10,50)
Enter ღილაკის შემდეგ დაჭერით დაინახავთ შეტყობინებას, როგორც ქვემოთ მოცემულ ეკრანის სურათზე:
ეს არის პირველი რიცხვი A1: A6 დიაპაზონში, რომელიც აკმაყოფილებს კრიტერიუმებს: 10-ზე მეტი, მაგრამ ნაკლები 50-ზე.
OK-ზე დაწკაპუნების შემდეგ გამოჩნდება მეორე შეტყობინება ნომრით 14. დანარჩენი რიცხვები არ ემთხვევა არჩევანს.კრიტერიუმები. ამიტომ, ფუნქცია გამოდის და აბრუნებს ორი მნიშვნელობიდან უდიდესს, 17.
MsgBox ფუნქცია შეიძლება გამოყენებულ იქნას თქვენი მორგებული ფუნქციის ყველაზე მნიშვნელოვან ადგილებში, რათა აკონტროლოთ მნიშვნელობების მნიშვნელობა ინდივიდუალური ცვლადების ცვლილება. შეტყობინებების ყუთები შეიძლება იყოს ძალიან სასარგებლო, როდესაც თქვენ გაქვთ დიდი ფუნქცია და ბევრი გამოთვლა. ამ შემთხვევაში, თქვენთვის ადვილი იქნება იმის დადგენა, კოდის რომელ ნაწილში ჩნდება შეცდომა.
განისაზღვრეთ გაჩერების წერტილები და შეასრულეთ ეტაპობრივად
შეგიძლიათ დაამატოთ წყვეტის წერტილები კოდს თქვენი ფუნქცია, სადაც კოდის შესრულება შეჩერდება. ასე რომ, თქვენ შეგიძლიათ ეტაპობრივად დაიცვას გაანგარიშების პროცესი. ამით თქვენ ხედავთ, თუ როგორ იცვლება ცვლადების მნიშვნელობები.
გაწყვეტის წერტილის დასამატებლად, მოათავსეთ კურსორი იმ ხაზზე, რომელიც შეიცავს განცხადებას, სადაც აირჩევთ პაუზას. შემდეგ დააწკაპუნეთ მარჯვენა ღილაკით და აირჩიეთ გამართვა -> გადართეთ Breakpoint ან უბრალოდ დააჭირეთ F9 . თქვენ ასევე შეგიძლიათ დააწკაპუნოთ სასურველ ადგილას ვერტიკალურ ნაცრისფერ ზონაზე ფუნქციის კოდის მარცხნივ.
წითელი წრე გამოჩნდება, როგორც ხედავთ ქვემოთ მოცემულ ეკრანის სურათზე. კოდის ხაზი, სადაც გაანგარიშება შეჩერდება, მონიშნულია წითლად.
ახლა, ფუნქციის გაშვებისას გაიხსნება VBA რედაქტორის ფანჯარა. კურსორი განლაგდება იმ წერტილში, სადაც გაჩერდით.
თუ მაუსის კურსორს გადაახვევთ ფუნქციის კოდის რომელიმე ცვლადზე, შეგიძლიათ ნახოთ მათი მიმდინარეობა.მნიშვნელობა:
დააჭირეთ F5 გაანგარიშების გასაგრძელებლად.
შენიშვნა. შესვენების წერტილის შემდეგ, შეგიძლიათ დაიწყოთ გამოთვლების პროგრესის თვალყურის დევნება ეტაპობრივად. თუ დააჭერთ F8 ღილაკს, შესრულდება VBA კოდის მხოლოდ ერთი შემდეგი ხაზი. ყვითელი ხაზი ისრით ასევე გადავა ბოლო შესრულებულ კოდის პოზიციაზე.
მას შემდეგ, რაც ფუნქციის შესრულება კვლავ შეჩერებულია, შეგიძლიათ ნახოთ ფუნქციის ყველა ცვლადის მიმდინარე მნიშვნელობები მაუსის კურსორის გამოყენებით.
F8-ის შემდეგი დაჭერით ერთი ნაბიჯით წინ წაგვიყვანს. . ასე რომ თქვენ შეგიძლიათ დააჭიროთ F8 გამოთვლის ბოლომდე. ან დააჭირეთ F5-ს, რათა გააგრძელოთ გამოთვლა მომდევნო წყვეტის წერტილამდე.
თუ შეცდომა მოხდა, კურსორი შეჩერდება კოდის იმ წერტილში, სადაც მოხდა შეცდომა. და თქვენ ასევე იხილავთ pop-up შეცდომის შეტყობინებას. ეს გაადვილებს პრობლემის მიზეზის დადგენას.
თქვენ მიერ მითითებული წყვეტის წერტილები გამოყენებული იქნება ფაილის დახურვამდე. როდესაც ხელახლა გახსნით, დაგჭირდებათ მათი ხელახლა დაყენება. არ ფიქრობთ, არ არის ყველაზე მოსახერხებელი მეთოდი?
თუმცა, ეს პრობლემა შეიძლება მოგვარდეს. ჩადეთ Stop განცხადება ფუნქციის კოდში საჭირო წერტილებში და შეგიძლიათ შეაჩეროთ პროგრამის შესრულება ისევე, როგორც წყვეტის წერტილების გამოყენებისას.
როდესაც VBA შეხვდება Stop განცხადებას, ის შეაჩერებს პროგრამის შესრულებას და დაელოდება თქვენს მოქმედებას. შემდეგ შეამოწმეთ ცვლადების მნიშვნელობებიდააჭირეთ F5-ს გასაგრძელებლად.
ან დააჭირეთ F8-ს, რათა შეასრულოთ ფუნქცია ეტაპობრივად, როგორც ეს აღწერილია ზემოთ.
Stop განცხადება არის პროგრამის ნაწილი და ამიტომ არის არ არის წაშლილი, როგორც ეს ხდება წყვეტის წერტილის შემთხვევაში. როდესაც დაასრულებთ გამართვას, თავად წაშალეთ იგი. ან გადააქციეთ ის კომენტარად ერთი ციტატით (').
გამართვა Debug.Print ოპერატორის გამოყენებით
შეგიძლიათ მოათავსოთ Debug.Print ფუნქციის კოდი სწორ ადგილას. ეს სასარგებლოა ციკლურად ცვალებადი ცვლადების მნიშვნელობების შესამოწმებლად.
შეგიძლიათ ნახოთ Debug.Print-ის მუშაობის მაგალითი ქვემოთ მოცემულ ეკრანის სურათზე.
განცხადება Debug.Print i, vMax ბეჭდავს მნიშვნელობებს და მათ რიგით რიცხვებს.
Immediate ფანჯარაში ხედავთ ორ რიცხვს (17 და 14) შერჩეული დიაპაზონიდან, რომელიც შეესაბამება დააწესეთ ლიმიტები და რომელთა შორის შეირჩევა მაქსიმუმი. ციფრები 1 და 2 ნიშნავს, რომ ფუნქციამ დაასრულა 2 ციკლი, რომელშიც არჩეული იყო ნომრები. ჩვენ ვხედავთ ყველაზე მნიშვნელოვანი ცვლადების მნიშვნელობებს, როგორც ამას გავაკეთეთ ადრე MsgBox . მაგრამ ამან არ შეაჩერა ფუნქცია.
ფუნქციის გამოძახება პროცედურისგან
შეგიძლიათ გამოიძახოთ მომხმარებლის განსაზღვრული ფუნქცია არა სამუშაო ფურცლის უჯრედიდან, არამედ პროცედურისგან. ამ შემთხვევაში, ყველა შეცდომა გამოჩნდება Visual Basic Editor-ის ფანჯარაში.
აი, როგორ შეგიძლიათ გამოიძახოთ მომხმარებლის მიერ განსაზღვრული ფუნქცია GetMaxBerweenპროცედურა:
Sub Test() Dim x x = GetMaxBetween(Range ("A1:A6"), 10, 50) MsgBox(x) End Subგანათავსეთ კურსორი კოდის ნებისმიერ ადგილას და დააჭირეთ F5 . თუ ფუნქციაში შეცდომა არ არის, თქვენ იხილავთ ამომხტარ ფანჯარას გაანგარიშების შედეგით.
შეცდომის შემთხვევაში ნახავთ შესაბამის შეტყობინებას VBA რედაქტორში. გაანგარიშება შეჩერდება და კოდის ხაზი, რომელშიც მოხდა შეცდომა, მონიშნული იქნება ყვითლად. თქვენ შეგიძლიათ მარტივად განსაზღვროთ სად და რატომ მოხდა შეცდომა.
სულ ეს არის. ახლა თქვენ შექმენით თქვენი საკუთარი დანამატი, დაამატეთ იგი Excel-ში და შეგიძლიათ გამოიყენოთ მასში UDF. თუ გსურთ მეტი UDF-ის გამოყენება, უბრალოდ ჩაწერეთ კოდი VBA რედაქტორში დანამატის მოდულში და შეინახეთ.
ეს დღეისთვის. ჩვენ განვიხილეთ მორგებული ფუნქციების გამართვის სხვადასხვა გზები და ვისწავლეთ მათი გამოყენება თქვენს სამუშაო წიგნში. ჩვენ ნამდვილად ვიმედოვნებთ, რომ ეს სახელმძღვანელოები თქვენთვის სასარგებლო იქნება. თუ თქვენ გაქვთ რაიმე შეკითხვები, დაწერეთ ამ სტატიის კომენტარებში.