შეცდომის შესახებ განაახლეთ შემდეგი: შეცდომის დამუშავება Excel VBA-ში

  • გააზიარეთ ეს
Hugh West

Microsoft Excel VBA-ში შეცდომების დამუშავება ერთ-ერთი კრიტიკული ამოცანაა. თუ კოდის ავტორი ხართ, თქვენ იცით შეცდომების დამუშავების მნიშვნელობა სრულყოფილი აპლიკაციის შესაქმნელად. განცხადებაში ნებისმიერმა შეცდომამ შეიძლება შეაფერხოს თქვენი VBA კოდი მრავალი გზით. ასე რომ, ფრთხილად უნდა იყოთ, რომ გაუმკლავდეთ ამ შეცდომებს VBA კოდის შესრულებისას. არსებობს უამრავი შეცდომა, რომელსაც შეიძლება შეხვდეთ VBA კოდის Excel-ში გამოყენებისას. ერთ-ერთი მათგანის გადასაჭრელად ჩვენ ვიყენებთ განცხადებას შეცდომის შესახებ Resume Next .

ამ გაკვეთილზე თქვენ შეისწავლით Excel-ში Error Resume Next განაცხადის გამოყენებას. VBA. ეს სახელმძღვანელო იქნება შესაბამისი მაგალითებით და სათანადო ილუსტრაციებით. ასე რომ, დარჩით ჩვენთან.

ჩამოტვირთეთ პრაქტიკის სამუშაო წიგნი

VBA On Error Resume Next.xlsm

Error Handling in Excel VBA

Microsoft Excel VBA-თან მუშაობისას, თქვენ შეხვდებით უამრავ შეცდომას ქვეპროცედურებში. როდესაც VBA ვერ ასრულებს განცხადებას, ის უშვებს გაშვების დროის შეცდომას.

Excel ავტომატურად უმკლავდება ამ შეცდომებს, ასე რომ, როდესაც გაშვების დროის შეცდომა გამოჩნდება, ის აჩვენებს ნაგულისხმევი შეცდომის შეტყობინებას, როგორიცაა:

ახლა, თქვენ შეგიძლიათ გაუმკლავდეთ მათ სხვადასხვაგვარად ზოგიერთი VBA განცხადებებით. მათ განვიხილავ შემდეგ სექციებში.

დაწვრილებით: როგორ გავასწოროთ #REF! შეცდომა Excel-ში (6 გამოსავალი)

VBA-ში შეცდომის განცხადებების შესახებ

გაშვების დროის შეცდომების დასამუშავებლად, ჩვენ ვავალებთ Excel-ს On Error განაცხადით. ის წყვეტსNAME შეცდომის შესახებ Excel-ში (10 მაგალითი)

💬 დასამახსოვრებელი რამ

✎ შეცდომის შემდეგ Resume Next არ აფიქსირებს შეცდომებს. ის ძირითადად უგულებელყოფს შეცდომას და გადადის შემდეგ განცხადებაზე.

Excel აკავებს და ინახავს გაშვების დროის შეცდომებს Err ობიექტში. როდესაც ჩვენ ვიყენებთ განცხადებას შეცდომის შესახებ, განაახლეთ შემდეგი , ის ასუფთავებს Err ობიექტის თვისებებს.

შეგიძლიათ გამორთოთ შეცდომის შესახებ განაახლეთ შემდეგი განცხადება თქვენს VBA კოდში Excel-ში შეცდომის შესახებ GoTo 0 განცხადების დამატებით.

დასკვნა

დასასრულებლად, ვიმედოვნებ, რომ ეს სახელმძღვანელო მოგაწოდებთ სასარგებლო ნაწილს Excel VBA-ში შეცდომის აღდგენის შემდეგ -ის გამოყენების ცოდნა. გირჩევთ ისწავლოთ და გამოიყენოთ ყველა ეს ინსტრუქცია თქვენს მონაცემთა ბაზაში. ჩამოტვირთეთ სავარჯიშო სამუშაო წიგნი და სცადეთ ისინი თავად. ასევე, მოგერიდებათ გამოხმაუროთ კომენტარების განყოფილებაში. თქვენი ღირებული გამოხმაურება გვაძლევს მოტივაციას, შევქმნათ მსგავსი გაკვეთილები.

არ დაგავიწყდეთ შეამოწმოთ ჩვენი ვებ-გვერდი Exceldemy.com Excel-თან დაკავშირებული სხვადასხვა პრობლემებისა და გადაწყვეტილებებისთვის.

განაგრძეთ ახალი მეთოდების სწავლა და განაგრძეთ ზრდა!

რა სახის ოპერაციების გაკეთება გვინდა შემდეგ დაუყოვნებლივ. ძირითადად, ჩვენ ამ შეცდომებს გამორთავთ ამ სახის შეცდომების დამუშავებით.

ჩვენ ვიყენებთ სამი სახის On Error განცხადებებს (სინტაქსს) Excel VBA-ში.

  • <. 1>შეცდომის შესახებ გადადით ხაზზე
  • შეცდომის შესახებ განაახლეთ შემდეგი
  • შეცდომის შესახებ გადადით 0

როდესაც შეცდომას აღმოაჩენთ, გამოიყენეთ On Error ბრძანება. იმიტომ, რომ თუ არ გამოიყენებთ შეცდომის შესახებ დეკლარაციას, გაშვების დროის ეს შეცდომები დამღუპველი იქნება. ის აჩვენებს შეცდომის მოთხოვნას და შეაჩერებს შესრულებას.

როდესაც ჩვენ ვიყენებთ შეცდომის შესახებ განცხადებას, ჩვენ ჩართავთ შეცდომის „ჩართულის“ დამმუშავებელს. „აქტიური“ შეცდომის დამმუშავებელი არის ჩართული დამმუშავებელი, რომელიც იწყებს შეცდომის დამუშავების ოპერაციას. თუ შეცდომა წარმოიქმნება შეცდომის დამმუშავებლის ჩართვისას, მიმდინარე მეთოდის შეცდომის დამმუშავებელი ვერ გაუძლებს შეცდომას. ამის შემდეგ კონტროლი უბრუნდება გამოძახების პროცედურას.

თუ გამოძახების პროცესს აქვს ჩართული შეცდომის დამმუშავებელი, ის ამოქმედდება შეცდომის მართვისთვის. თუ თქვენი დარეკვის სისტემის შეცდომის დამმუშავებელი შესაბამისად ჩართულია, კონტროლი აბრუნებს ადრინდელი დარეკვის პროცედურების მეშვეობით, სანამ არ იპოვის ჩართულ, მაგრამ არააქტიურ შეცდომის დამმუშავებელს. თუ ის ვერ პოულობს უმოქმედო ჩართულ შეცდომის დამმუშავებელს, ეს ნიშნავს, რომ შეცდომა კატასტროფულია მის წარმოშობის მომენტში.

ყოველ ჯერზე, როცა შეცდომის დამმუშავებელი უბრუნებს უფლებამოსილებას გამოძახების პროცედურას, ეს პროცედურა ავითარებს არსებულ პროცედურას. აღსრულება ხელახლა იწყებაწინამდებარე პროცედურა მომენტში, რომელიც არჩეულია Resume განაცხადით, როდესაც შეცდომის დამმუშავებელი ამუშავებს შეცდომებს ნებისმიერ პროცედურაში.

'შეცდომის შესახებ, Resume Next' VBA-ში

ახლა, შეცდომის აღდგენის შესახებ შემდეგი განცხადება ეუბნება VBA-ს, იგნორირება გაუკეთოს კოდის ნებისმიერ ხაზს, რომელსაც აქვს შეცდომები და დაუყოვნებლივ გადავიდეს კოდის შემდეგ ხაზზე. ამის შემდეგ, Excel VBA კოდები გამოტოვებენ ხაზს ან ხაზებს, რომლებიც შეიცავს შეცდომებს და გადავა კოდის შემდეგ თანმიმდევრობაზე.

შეცდომის შესახებ განახლების შემდეგი განცხადება აიძულებს განხორციელებას განაახლეთ ბრძანებით მყისიერად მიჰყვება კოდების ხაზს, რამაც გამოიწვია გაშვების დროის შეცდომა. ეს განცხადება საშუალებას აძლევს შესრულებას გამოტოვოს მაშინაც კი, თუ არსებობს გაშვების დროის შეცდომა. თუ ფიქრობთ, რომ კოდის კონკრეტულ ხაზს შეუძლია შეცდომის გამოწვევა, მოათავსეთ შეცდომების დამუშავების რუტინა იქ, ვიდრე პროცედურის ფარგლებში სხვა ადგილას. განცხადება შეცდომის აღდგენის შემდეგ უმოქმედო ხდება, როდესაც თქვენი კოდი სხვა პროცედურას გამოიძახებს. ასე რომ, როცა ამ რუტინაში დაგჭირდებათ შეცდომის დამუშავების თანხვედრა, თქვენ უნდა აწარმოოთ შეცდომის აღდგენის შემდეგ ბრძანება თითოეულ დასახელებულ შაბლონში.

გონივრულია, როცა კოდის ხაზი შეიძლება გამოტოვოთ არ არის აუცილებელი მაკრო აყვავებული მუშაობისთვის. მაგრამ გახსოვდეთ, ეს შეიძლება იყოს საზიანო, თუ მას არასწორად იყენებთ, რადგან შეიძლება გამოიწვიოს არასასურველი შედეგები.

გახსოვდეთ:

ჩართვა შეცდომა Resume შემდეგი განცხადება არ არისშეასწორეთ მუშაობის დროის შეცდომები. ის ძირითადად იგნორირებას უკეთებს შეცდომებს, რომლებშიც თქვენი VB შესრულება განახლდება განცხადებიდან, რომელმაც წარმოქმნა გაშვების შეცდომა.

შეხედეთ შემდეგ კოდს:

9318

ჩვენ ვცადეთ 5-ის გაყოფა. 0-ით და 1-ით. მოდით გავუშვათ კოდი. ის აჩვენებს შემდეგ გამომავალს:

წარმოქმნის გაშვების დროის შეცდომას. ჩვენ არ შეგვიძლია რიცხვის 0-ზე გაყოფა. კოდის გამართვისას ნახავთ შემდეგს:

როდესაც VB პროგრამა აღმოაჩენს შეცდომას, ის მაშინვე აჩერებს პროცედურას. ის არ ასრულებს შემდეგ ხაზს.

ახლა, მოდით განვახორციელოთ On Error Resume Next განცხადება შეცდომის განცხადებამდე:

2340

კოდის გაშვების შემდეგ, თქვენ იხილეთ შემდეგი:

როგორც ხედავთ, VBA უგულებელყოფს შეცდომის გამომწვევ ხაზს და დაუყოვნებლივ გადადის კოდის შემდეგ ხაზზე. ამგვარად, შეგიძლიათ გამოიყენოთ შეცდომის შესახებ, განაახლეთ შემდეგი განცხადება შეცდომის დასამუშავებლად Excel VBA-ში.

მაგალითები „შეცდომის შესახებ, განაახლეთ შემდეგი“ VBA-ში

In შემდეგ სექციებში, მე ვაპირებ მოგაწოდოთ შეცდომის აღდგენის შემდეგ განცხადების ორი მაგალითი, რომელიც შეგიძლიათ დანერგოთ თქვენს Excel სამუშაო ფურცელში VBA-ს გამოყენებით. გირჩევთ ისწავლოთ და გამოიყენოთ ეს ყველაფერი თქვენს სამუშაო წიგნში. ეს აუცილებლად გაზრდის თქვენს Excel-ის ცოდნას.

1. „შეცდომის შესახებ განაახლეთ შემდეგი“ განცხადება სამუშაო ფურცლების დასამალად

ახლა, ამ მაგალითში, მე გაჩვენებთ VBA კოდს, რომელიცდამალავს თქვენი აქტიური სამუშაო წიგნის ყველა სამუშაო ფურცელს.

შეხედეთ შემდეგ ეკრანის სურათს:

აქ გვაქვს ოთხი სამუშაო ფურცელი. ჩვენ დავმალავთ ყველა მათგანს შემდეგი VBA კოდის გამოყენებით:

7927

როდესაც შეასრულებთ შემდეგ კოდს, დაინახავთ მუშაობის დროის შემდეგ შეცდომას:

Excel აჩვენებს ამ შეცდომას, რადგან თქვენ არ შეგიძლიათ დამალოთ ყველა ფურცელი სამუშაო წიგნში. ასე რომ, თქვენ უნდა უგულებელყოთ შეცდომა. ამისათვის თქვენ უნდა განახორციელოთ On Error Resume Next განცხადება თქვენი კოდის სტრიქონში.

1746

VBA კოდის შესრულების დასრულების შემდეგ ნახავთ შემდეგ გამომავალს:

საბოლოოდ, შესრულების შემდეგ შეცდომებს ვერ ნახავთ. ასე რომ, ჩვენი On Error Resume Next განცხადება ძალიან კარგად მუშაობდა VBA კოდში.

წაიკითხეთ მეტი: შეცდომები Excel-ში და მათი მნიშვნელობა (15 განსხვავებული შეცდომა)

2. VLOOKUP ფუნქციით „შეცდომით, განაახლეთ შემდეგი“ VBA-ში

ამ მაგალითში მე ვაჩვენებ VLOOKUP ფუნქციის მაგალითს VBA-ში . ახლა, ეს VBA კოდი ასევე შეიცავს განცხადებას შეცდომის შესახებ, განაახლეთ შემდეგი .

შეხედეთ შემდეგ ეკრანის სურათს:

აქ , შეგიძლიათ ნახოთ ზოგიერთი ადამიანის სახელები და მათი ასაკი. მეზობელ ცხრილში ჩვენ გამოვიყენებთ VLOOKUP ადამიანის სახელისა და ასაკის საპოვნელად.

ამისთვის აკრიფეთ შემდეგი კოდი:

7314

ახლა გაუშვით მაკრო . თქვენ ნახავთ შემდეგ შეცდომას:

ახლა, ეს არის გაშვების დროშეცდომა. რატომ ხდება ეს? კიდევ ერთხელ გადახედეთ მონაცემთა ბაზას:

როგორც ხედავთ, „აარონის“ და „ემას“ მონაცემები არ არის. ამიტომ ის ახორციელებს მხოლოდ VLOOKUP პირველი ჩანაწერისთვის. ამის შემდეგ ის აჩერებს შესრულებას. ახლა, თუ გსურთ შეცდომის იგნორირება და დარჩენილი ასაკის პოვნა, გამოიყენეთ შეცდომის შესახებ განაახლეთ შემდეგი განცხადება.

3926

VBA კოდის გაშვების შემდეგ, ნახავთ შემდეგი გამომავალი:

როგორც ხედავთ, შეცდომის აღდგენის შემდეგ ბრძანების გამოყენებით, ჩვენ უგულებელვყავით შეცდომა და ვიპოვეთ დანარჩენი პირები. ასაკი. ჩვენმა VBA კოდმა ვერ იპოვა აარონის და ემას მონაცემები. სწორედ ამიტომ, მან უგულებელყო ეს მნიშვნელობები და დააბრუნა დანარჩენი მნიშვნელობები Excel-ის სამუშაო ფურცელში.

წაიკითხეთ მეტი: [გამოსწორდა] Excel-მა აღმოაჩინა პრობლემა ამ სამუშაო ფურცელში ერთი ან მეტი ფორმულის მითითებასთან დაკავშირებით

გამორთეთ „On Error Resume Next“ Excel VBA-ით

ახლა შეიძლება აღმოჩნდეთ სიტუაციაში, როდესაც გსურთ უგულებელყოთ შეცდომები VBA კოდის კონკრეტული სეგმენტისთვის. გახსოვდეთ, თუ იყენებთ On Error Resume Next განცხადებას VBA კოდში, ის გამოტოვებს ყველა შეცდომას ამის შემდეგ. ახლა, თუ გსურთ გამორთოთ ეს და ჩართოთ შეცდომის დამუშავება სხვა სეგმენტისთვის, გამოიყენეთ შეცდომის შესახებ GoTo 0 . ის ხელახლა ჩართავს შეცდომის დამუშავებას.

ზოგადი გამოყენება:

Sub error_handling()

შეცდომების იგნორირება

შეცდომის შესახებ განაახლეთ შემდეგი

// კოდების ხაზები

ჩართეთ შეცდომის დამუშავება

შეცდომის შესახებ გადადით 0

//კოდების ხაზები

დასრულება ქვე

გადახედეთ შემდეგი VBA კოდი:

3116

ჩვენ ვიყენებდით კოდს ადრე VLOOKUP ფუნქციისთვის. აქ დამატებულია კოდის დამატებითი ნაწილი, რათა წარმოაჩინოთ. ჩვენი კოდი უგულებელყოფს შეცდომებს VLOOKUP შესრულებისას, მაგრამ ის ააქტიურებს შეცდომის დამუშავებას შეცდომის შესახებ GoTo 0 განცხადების შემდეგ.

<. 0> დაწვრილებით: Excel VBA: გამორთეთ „შეცდომის განახლება შემდეგი“

VBA „შეცდომის შესახებ GoTo“

ადრე განვიხილეთ შეცდომების დამუშავება On Error მეთოდის გამოყენებით. ჩვენი მთელი სტატია ეხებოდა შეცდომის რეზიუმეს შემდეგს. ახლა, ასევე არსებობს ორი ტიპის შეცდომის დამუშავება, რომლებსაც განვიხილავ შემდეგ განყოფილებებში.

1. VBA შეცდომის შესახებ GoTo 0

The შეცდომის შესახებ Goto 0 განცხადება არის Excel-ის ჩაშენებული პარამეტრი, თუ თქვენს კოდებს არ აქვთ შეცდომების დამმუშავებელი. ეს ძირითადად გულისხმობს, რომ როდესაც VBA აღმოაჩენს შეცდომას შეცდომის შესახებ GoTo 0 , ის შეწყვეტს კოდის გაშვებას და აჩვენებს მის ტრადიციულ შეცდომის შეტყობინებებს.

შეცდომის შესახებ GoTo 0 განაცხადი ძირითადად გამორთავს შეცდომის დამუშავებას წინამდებარე პროცედურაში. ის არ განსაზღვრავს 0 ხაზს, როგორც შეცდომის დამუშავების კოდის დასაწყისს, მაშინაც კი, თუ მეთოდი შეიცავს 0 ნომრიან ხაზს.

შეხედეთ შემდეგ კოდს:

1587

ჩვენ გვაქვს უკვე გაჩვენეთ ეს კოდი. ეს კოდი ძირითადად მალავს ყველა სამუშაო ფურცელსთქვენს ამჟამინდელ სამუშაო წიგნში. ახლა, მე ნამდვილად მაქვს დამატებითი კოდი შეცდომის შესახებ GoTo 0 შეცდომის საჩვენებლად. თუ კოდს გაუშვით, დაინახავთ შემდეგს:

ის გვიჩვენებს ამ შეცდომას, რადგან აქტიურ სამუშაო წიგნში არ შეიძლება გვქონდეს იგივე სახელის ფურცლები.

2. VBA On Error GoTo ხაზი

ახლა, თქვენ ასევე შეგიძლიათ დაავალოთ Excel-ს გაუშვას კოდის სხვა სეგმენტი, თუ ის აღმოაჩენს რაიმე შეცდომას On Error GoTo ხაზის გამოყენებით . ის ეუბნება Excel-ს შეასრულოს რაღაც შეცდომის აღმოჩენის შემდეგ.

ხაზის არგუმენტი არის ნებისმიერი ხაზის ტეგი ან ხაზის ნომერი. თუ ჩვენი კოდი იწვევს გაშვების დროს რაიმე შეცდომას, ის გადავა ხაზში, რაც გამოიწვევს შეცდომის დამმუშავებლის გააქტიურებას შესრულებაში. დაიმახსოვრეთ, თქვენი განსაზღვრული ხაზი უნდა იყოს ზუსტად იმ პროცედურაში, როგორც შეცდომის შესახებ განცხადება; წინააღმდეგ შემთხვევაში, ეს გამოიწვევს კომპილაციის შეცდომას.

შეხედეთ შემდეგ კოდს:

3555

კოდი ნახეთ წინა მაგალითში. როდესაც ჩვენ ვიყენებდით შეცდომის შესახებ GoTo 0 , მან გამოიწვია შეცდომა. მაგრამ, აქ ჩვენ შევცვალეთ ის შეცდომის შესახებ GoTo ხაზში განცხადებით.

ახლა გაუშვით კოდი და დაინახავთ შემდეგს:

როგორც ხედავთ, ის არ გვიჩვენებს სტანდარტული შეცდომის დიალოგურ ფანჯარას. ამის ნაცვლად, ის აჩვენებს შეტყობინებების მორგებულ ყუთს, რომელიც ჩვენ შევქმენით error_handler სეგმენტში. როდესაც Excel აღმოაჩენს რაიმე შეცდომას, ის გადადის error_handler სეგმენტზე და გვაჩვენებს შეტყობინების ველს.

ჩვენ ასევე გამოვიყენეთ Exit Sub პროცედურაში.თუ არ არის ფურცელი სახელად „ VLOOKUP “, ჩვენი VBA კოდი გადაარქმევს აქტიურ ფურცელს. შემდეგ, ჩვენ აქ უნდა დავასრულოთ შესრულება, რადგან არ გვჭირდება შეცდომის დამმუშავებელზე გადასვლა და შეტყობინებების ველის ჩვენება.

VBA 'შეცდომის შესახებ' არ მუშაობს Excel-ში

ზოგჯერ, რაც არ უნდა ეცადოთ, შეცდომის ჩართვის მეთოდი არ იმუშავებს. მანამდე ჩვენ დავაყენეთ შეცდომის შესახებ მეთოდი შეცდომების დასამუშავებლად. მაგრამ, ზოგჯერ ის აჩვენებს შეცდომებს, მაშინაც კი, თუ იყენებთ შეცდომის განახლების შემდეგ ან შეცდომის შესახებ GoTo 0 . შეიძლება იყოს რამდენიმე მიზეზი თქვენს კოდში, რომელიც უნდა გამოსწორდეს. მე არ ვაპირებ ამის გაჩვენებას.

VBA ' შეცდომის შესახებ' არ მუშაობს Excel-ში არის ჩართვა Excel-ში "Break on All Errors" ოფცია.

მიჰყევით ამ ნაბიჯებს ამის გადასაჭრელად:

📌 ნაბიჯები

  • პირველ რიგში, დააჭირეთ Alt+F11 თქვენს კლავიატურაზე გახსენით VBA რედაქტორი.
  • ახლა დააწკაპუნეთ ინსტრუმენტები > ოფციები.

  • ამის შემდეგ დააწკაპუნეთ ზოგადი ჩანართზე პარამეტრები დიალოგში ყუთი.

  • აქ, თქვენ ხედავთ, რომ „ ყველა შეცდომის დარღვევა “ უკვე მონიშნულია. ის ძირითადად ხელს გიშლით შეცდომებთან გამკლავებაში.
  • მის შესაცვლელად აირჩიეთ ვარიანტი „ გაატეხეთ უკონტროლო შეცდომები “ და დააწკაპუნეთ OK .

ვიმედოვნებ, ეს მოაგვარებს თქვენს პრობლემას, რომ VBA „შეცდომის შესახებ“ არ მუშაობს Excel-ში.

დაწვრილებით: მიზეზები და შესწორებები

ჰიუ ვესტი არის Excel-ის ძალიან გამოცდილი ტრენერი და ანალიტიკოსი, რომელსაც აქვს 10 წელზე მეტი გამოცდილება ინდუსტრიაში. მას აქვს ბაკალავრის ხარისხი ბუღალტერიასა და ფინანსებში და მაგისტრის ხარისხი ბიზნესის ადმინისტრირებაში. ჰიუს აქვს სწავლების გატაცება და შეიმუშავა სწავლების უნიკალური მიდგომა, რომელიც ადვილად გასაგები და გასაგებია. მისი ექსპერტი Excel-ის ცოდნა დაეხმარა ათასობით სტუდენტს და პროფესიონალს მთელს მსოფლიოში, გაეუმჯობესებინათ თავიანთი უნარები და გამოირჩეოდნენ თავიანთ კარიერაში. თავისი ბლოგის საშუალებით, ჰიუ უზიარებს თავის ცოდნას მსოფლიოს, სთავაზობს უფასო Excel გაკვეთილებს და ონლაინ ტრენინგებს, რათა დაეხმაროს ინდივიდებსა და ბიზნესს თავიანთი პოტენციალის სრულად მიღწევაში.