Xato haqida Davom etish Keyingi: Excel VBA da ishlov berish xatosi

  • Buni Baham Ko'Ring
Hugh West

Microsoft Excel VBA-da xatolarni qayta ishlash muhim vazifalardan biridir. Agar siz kodlovchi bo'lsangiz, mukammal dastur yaratish uchun xatolarni qayta ishlash muhimligini bilasiz. Bayonotdagi har qanday qo'pol xato VBA kodingizga ko'p jihatdan xalaqit berishi mumkin. Shunday qilib, VBA kodini bajarishda ushbu xatolarga ehtiyot bo'lishingiz kerak. Excelda VBA kodini ishlatishda ko'plab ish vaqtidagi xatolarga duch kelishingiz mumkin. Ulardan birini hal qilish uchun biz Keyingi xatoni davom ettirish bayonotidan foydalanamiz.

Ushbu qo'llanmada siz Excel dasturida Keyingi xatoni davom ettirish bayonotidan foydalanishni o'rganasiz. VBA. Ushbu o'quv qo'llanma tegishli misollar va to'g'ri rasmlar bilan bog'liq bo'ladi. Shunday ekan, biz bilan qoling.

Amaliy kitobni yuklab oling

VBA On Xato Resume Next.xlsm

Excelda xato bilan ishlash VBA

Microsoft Excel VBA bilan ishlashda siz sub-protsedurada juda ko'p xatolarga duch kelasiz. VBA bayonotni bajarolmasa, u ish vaqtida xato qiladi.

Excel avtomatik ravishda bu xatolar bilan shug'ullanadi, shuning uchun ish vaqtida xatosi paydo bo'lganda, u quyidagi kabi standart xato xabarini ko'rsatadi:

Endi siz ba'zi VBA bayonotlari bilan bularni turlicha hal qilishingiz mumkin. Men ularni keyingi bo'limlarda muhokama qilaman.

Batafsil o'qing: Qanday qilib #REF tuzatish kerak! Excelda xatolik (6 ta yechim)

VBA-dagi xatolik bayonotlarida

Ishlash vaqtidagi xatolarni qayta ishlash uchun biz Excelga On Xato bayonoti bilan ko'rsatma beramiz. Bu qaror qiladiExcelda NAME xatosi (10 ta misol)

💬 Esda tutish kerak bo'lgan narsalar

✎ Xato haqida keyingi davom ettirish xatolarni tuzatmaydi. U asosan xatoni e'tiborsiz qoldirib, keyingi bayonotga o'tadi.

Excel ishga tushirish vaqtidagi xatolarni Err obyektida saqlaydi va saqlaydi. Keyingi xatoni davom ettirish iborasidan foydalanganda, u Err ob'ekt xususiyatlarini o'chiradi.

Siz Keyingi xatoni davom ettirish funksiyasini o'chirib qo'yishingiz mumkin. O'tish xatosi haqida 0 bayonotini qo'shish orqali Excel-dagi VBA kodingizdagi bayonotni yozing.

Xulosa

Xulosa qilish uchun, umid qilamanki, ushbu qo'llanma sizga foydali bo'lgan narsalarni taqdim etdi. Excel VBA-da Keyingi xatoni davom ettirish dan foydalanishni bilish. Ushbu ko'rsatmalarning barchasini o'rganishingizni va ma'lumotlar to'plamiga qo'llashingizni tavsiya qilaman. Amaliy ish kitobini yuklab oling va ularni o'zingiz sinab ko'ring. Shuningdek, sharhlar bo'limida o'z fikringizni bildiring. Sizning qimmatli fikr-mulohazalaringiz bizni shunga o'xshash darsliklar yaratishga undaydi.

Excel bilan bog'liq turli muammolar va yechimlar uchun Exceldemy.com veb-saytimizni tekshirishni unutmang.

Yangi usullarni o'rganishda va rivojlanishda davom eting!

biz darhol qanday operatsiyalarni qilishni xohlaymiz. Asosan, biz bu xatolarni bunday xatolarni qayta ishlash orqali o'chirib qo'yamiz.

Biz Excel VBA da uchta turdagi On Xato bayonotlaridan (sintaksis) foydalanamiz.

  • O'tish xatosi haqida satr
  • Xato haqida Keyingini davom ettirish
  • O'tish xatosi haqida 0

Xato topsangiz, "Xato haqida" buyrug'idan foydalaning. Chunki Xato deklaratsiyasidan foydalanmasangiz, bu ish vaqtidagi xatolar halokatli bo'ladi. U xato so'rovini ko'rsatadi va bajarilishini to'xtatadi.

Biz Xato haqida bayonotidan foydalanganda, biz "yoqilgan" xato ishlov beruvchini yoqamiz. "Faol" xato ishlov beruvchisi xatoliklarni qayta ishlash jarayonini boshlaydigan yoqilgan ishlov beruvchidir. Agar xato ishlov beruvchisi ishtirok etganda xatolik yuzaga kelsa, joriy usulning xato ishlovchisi xatoga bardosh bera olmaydi. Shundan so'ng, boshqaruv qo'ng'iroq qilish protsedurasiga qaytadi.

Agar chaqiruv jarayonida xato ishlov beruvchisi yoqilgan bo'lsa, u xatoni boshqarish uchun ishga tushadi. Agar qo'ng'iroq qilish tizimingizning xato ishlov beruvchisi mos ravishda ishga tushgan bo'lsa, boshqaruv yoqilgan, lekin faol bo'lmagan xato ishlov beruvchini topmaguncha oldingi qo'ng'iroq protseduralari orqali qaytarib beradi. Agar u hech qanday bo'sh turgan xato ishlov beruvchisini topa olmasa, bu xato sodir bo'lgan nuqtada halokatli ekanligini anglatadi.

Xato ishlov beruvchisi har safar chaqiruv protsedurasiga ruxsat berganida, bu protsedura mavjud protsedurani rivojlantiradi. Ijro etish ichida qayta boshlanadi Resume operatori har qanday protseduradagi xatolarni qayta ishlaganda, Resume iborasi tomonidan tanlangan vaqtda joriy protsedura. 1>Keyingi xatoni davom ettirish to'g'risida bayonot VBA-ga xatoliklari bo'lgan har qanday kod qatorlarini e'tiborsiz qoldirishni va darhol quyidagi kod qatoriga o'tishni aytadi. Shundan so'ng, Excel VBA kodlari ulardagi xatoliklarni o'z ichiga olgan satr yoki satrlarni o'tkazib yuboradi va quyidagi kodlar ketma-ketligiga o'tadi.

Xatoni davom ettirish keyingi bayonoti amalga oshirishga majbur qiladi. ishga tushirish vaqtida xatolikka sabab bo'lgan kodlar qatorini bir zumda ta'qib qilish buyrug'i bilan davom eting. Ushbu bayonot ish vaqtida xatolik bo'lsa ham bajarishni o'tkazib yuborishga ruxsat beradi. Agar ma'lum bir kod qatori xatolikka olib kelishi mumkin deb hisoblasangiz, uni protsedura ichida boshqa joyga qo'yishdan ko'ra, xatolarni qayta ishlash tartibini o'sha joyga qo'ying. Kodingiz boshqa protsedurani chaqirganda Xatoni davom ettirish Keyingi bayonoti ishlamay qoladi. Shunday qilib, siz ushbu tartibdagi xatolarni qayta ishlashingiz kerak bo'lganda, har bir nomlangan naqshda Keyingi xatoni davom ettirish buyrug'ini bajarishingiz kerak.

Kod qatori o'rinli bo'ladi. o'tkazib yuborish makroning gullab-yashnashi uchun zarur emas. Ammo esda tutingki, agar siz uni noto'g'ri ishlatsangiz, bu zararli bo'lishi mumkin, chunki u kutilmagan natijalarga olib kelishi mumkin.

Eslab qoling:

On Xato Davom etish Keyingi bayonot bajarilmaydiish vaqtidagi xatolarni tuzatish. U asosan ish vaqti xatosini yaratgan bayonotdan VB ijrosi davom ettiriladigan xatolarni e'tiborsiz qoldiradi.

Quyidagi kodni ko'rib chiqing:

7620

Biz 5 ni bo'lishga harakat qildik. 0 va 1 bilan. Keling, kodni ishga tushiramiz. U quyidagi chiqishni ko'rsatadi:

U ish vaqti xatosini keltirib chiqaradi. Raqamni 0 ga bo'la olmaymiz. Kodni disk raskadrovka qilganda siz quyidagilarni ko'rasiz:

VB dasturi xatolikni topsa, u darhol protsedurani to'xtatadi. U quyidagi satrni bajarmaydi.

Endi, xato bayonotidan oldin Xatoni davom ettirish Keyingi bayonotini amalga oshiramiz:

1303

Kodni ishga tushirgandan so'ng, siz quyidagini ko'ring:

Ko'rib turganingizdek, VBA xatoni keltirib chiqaradigan qatorga e'tibor bermaydi va darhol quyidagi kod qatoriga o'tadi. Shunday qilib, Excel VBA-da xatoni qayta ishlash uchun Xato davom ettirilganda iborasidan foydalanishingiz mumkin.

VBA-dagi 'Keyingi xatoni davom ettirish' misollari

In Keyingi bo'limlarda men sizga VBA yordamida Excel ish varag'iga kiritishingiz mumkin bo'lgan Keyingi xatoni davom ettirish bayonotining ikkita misolini taqdim etmoqchiman. Bularning barchasini o'rganishingizni va ish daftaringizga qo'llashingizni tavsiya qilaman. Bu, albatta, sizning Excel bilimlaringizni oshiradi.

1. Ishchi varaqlarni yashirish uchun “Keyingi davom etish xatosi haqida” bayonoti

Endi, bu misolda men sizga VBA kodini ko'rsataman.faol ish daftaringizning barcha varaqlarini yashiradi.

Quyidagi skrinshotni ko'rib chiqing:

Bu yerda bizda to'rtta ish varag'i bor. Biz ularning barchasini quyidagi VBA kodidan foydalanib yashiramiz:

4304

Quyidagi kodni bajarganingizda quyidagi ish vaqti xatosini ko'rasiz:

Excel bu xatoni ko'rsatadi, chunki siz ish kitobidagi barcha varaqlarni yashira olmaysiz. Shunday qilib, siz xatoga e'tibor bermasligingiz kerak. Buni amalga oshirish uchun siz kod qatorida On Error Resume Next iborasini amalga oshirishingiz kerak.

3174

VBA kodini bajarishni tugatgandan so'ng siz quyidagi natijani ko'rasiz:

Oxir-oqibat, bajarilgandan keyin hech qanday xatoliklarni ko'rmaysiz. Shunday qilib, bizning "Xatoni davom ettirish haqida keyingi" bayonotimiz VBA kodida juda yaxshi ishladi.

Batafsil o'qing: Exceldagi xatolar va ularning ma'nosi (15 xil xato)

2. VBA da "Keyingi xatoni davom ettirish" bilan VLOOKUP funksiyasi

Ushbu misolda men VBA da VLOOKUP funksiyasining misolini ko'rsataman. Endi ushbu VBA kodi Keyingi xatoni davom ettirish bayonotini ham o'z ichiga oladi.

Quyidagi skrinshotni ko'rib chiqing:

Bu yerda , siz ba'zi odamlarning ismlari va ularning yoshini ko'rishingiz mumkin. Qo'shni jadvalda biz VLOOKUP odamning ismi va yoshini topish uchun foydalanamiz.

Buni amalga oshirish uchun quyidagi kodni kiriting:

8614

Endi, makrosni ishga tushiring. . Siz quyidagi xatoni ko'rasiz:

Endi bu ish vaqtixato. Nima uchun bu sodir bo'ladi? Ma'lumotlar to'plamini qayta ko'rib chiqing:

Ko'rib turganingizdek, "Aaron" va "Emma" uchun ma'lumotlar yo'q. Shuning uchun u faqat birinchi kirish uchun VLOOKUP ni amalga oshiradi. Shundan so'ng, u ijroni to'xtatadi. Endi, agar siz xatoni e'tiborsiz qoldirmoqchi bo'lsangiz va qolgan asrlarni topishni istasangiz, Xatoni davom ettirish Keyingi bayonotidan foydalaning.

9466

VBA kodini ishga tushirgandan so'ng, siz quyidagini ko'rasiz quyidagi natija:

Ko'rib turganingizdek, Xato haqida keyingi davom ettirish buyrug'ini qo'llash orqali biz xatoga e'tibor bermadik va qolgan shaxslarni topdik. yosh. Bizning VBA kodimiz Aaron va Emma haqida hech qanday ma'lumot topa olmadi. Shuning uchun u ushbu qiymatlarni e'tiborsiz qoldirdi va Excel ish varag'idagi qolgan qiymatlarni qaytardi.

Batafsil o'qing: [Tuzatildi] Excel ushbu ishchi varaqda bir yoki bir nechta formula havolalari bilan muammo topdi

Excel VBA bilan "Keyingi xatoni davom ettirishni yoqish" funksiyasini o'chirib qo'ying

Endi siz VBA kodining ma'lum bir segmenti uchun xatolarni e'tiborsiz qoldirmoqchi bo'lgan vaziyatda bo'lishingiz mumkin. Esingizda bo'lsin, agar siz VBA kodida "Keyingi xatoni davom ettirish" iborasidan foydalansangiz, u barcha xatolarni o'tkazib yuboradi. Endi, agar siz buni o'chirib qo'ymoqchi bo'lsangiz va boshqa segment uchun xatolarni qayta ishlashni yoqmoqchi bo'lsangiz, On Error GoTo 0 dan foydalaning. U xatolarni qayta ishlashni yoqadi.

Umumiy foydalanish:

Sub error_handling()

Xatolarni e'tiborsiz qoldirish uchun

Keyingi davom etishda xatolik yuz berdi

// kodlar qatori

KimgaXatoni qayta ishlashni yoqing

Xato oʻtishda 0

//kodlar qatorlari

End sub

Buni koʻrib chiqing quyidagi VBA kodi:

9475

Biz kodni avval VLOOKUP funktsiyasi uchun ishlatganmiz. Bu erda sizni ko'rsatish uchun qo'shimcha kodlar to'plami qo'shildi. Bizning kodimiz VLOOKUP ni amalga oshirishda xatolarni e'tiborsiz qoldiradi, lekin u O'tish xatosi 0 bayonotidan so'ng xatolarni qayta ishlashni faollashtiradi.

Batafsil o'qing: Excel VBA: “Keyingi xatoni davom ettirishni yoqish”ni o'chirib qo'ying

VBA “O'tish xatosi haqida”

Avval muhokama qilgan edim On Error usuli yordamida xatolarni hal qilish. Bizning butun maqolamiz Keyingi xatoni davom ettirish haqida edi. Endi, men keyingi bo'limlarda muhokama qiladigan xatolarni qayta ishlashning ikki turi mavjud.

1. VBA On Xato GoTo 0

The O'tish xatosi 0 bayonot Excelning o'rnatilgan sozlamasidir, agar kodlaringizda xato ishlov beruvchisi bo'lmasa. Bu, asosan, VBA On Error GoTo 0 bilan xato topsa, u kodni ishlashni toʻxtatadi va oʻzining anʼanaviy xato xabari oynasini koʻrsatadi.

Oʻtish xatosi bayonoti asosan ushbu protsedurada xatolarni qayta ishlashni o'chiradi. U 0 qatorni xatolik kodining boshlanishi sifatida belgilamaydi, garchi usul 0 raqamli qatorni o'z ichiga olgan bo'lsa ham.

Quyidagi kodni ko'rib chiqing:

1902

Bizda mavjud allaqachon sizga ushbu kodni ko'rsatgan. Ushbu kod asosan barcha ish varaqlarini yashiradijoriy ish kitobingizda. Endi menda xatoni ko'rsatish uchun On Error GoTo 0 bilan qo'shimcha kod bor. Agar siz kodni ishga tushirsangiz, quyidagilarni ko'rasiz:

Bu xatoni ko'rsatadi, chunki faol ish kitobida bir xil nomdagi varaqlar bo'lishi mumkin emas.

2. VBA On Error GoTo line

Endi Excelga O'tish xatosi satrida yordamida xatolik aniqlansa, kodning boshqa segmentini ishga tushirishni ham ko'rsatishingiz mumkin. U Excelga xato topilgandan keyin biror narsani bajarishni buyuradi.

Satr argumenti har qanday satr tegi yoki satr raqamidir. Agar bizning kodimiz ish vaqti xatosiga sabab bo'lsa, u satrga o'tadi va xato ishlov beruvchini bajarishda faollashadi. Esingizda bo'lsin, sizning belgilangan qatoringiz "On Error" iborasi kabi aniq tartibda bo'lishi kerak; aks holda kompilyatsiya xatosiga sabab bo'ladi.

Quyidagi kodni ko'rib chiqing:

5760

Siz oldingi misolda kodni ko'rdingiz. Biz On Error GoTo 0 dan foydalanganimizda, bu xatoga sabab bo'ldi. Lekin, bu yerda biz uni O'tish xatosi yo'lida bayoniga almashtirdik.

Endi kodni ishga tushiring va siz quyidagilarni ko'rasiz:

Ko'rib turganingizdek, u bizga standart xato dialog oynasini ko'rsatmaydi. Buning o'rniga, biz error_handler segmentida yaratgan maxsus xabarlar oynasini ko'rsatadi. Excel biror xato topsa, u error_handler segmentiga o'tadi va bizga xabarlar oynasini ko'rsatadi.

Biz protsedurada Chiqish pastki dan ham foydalandik.Agar “ VLOOKUP ” nomli varaq bo'lmasa, bizning VBA kodimiz faol varaq nomini o'zgartiradi. Keyin, biz bu yerda bajarishni tugatishimiz kerak, chunki biz xato ishlov beruvchiga o'tishimiz va xabarlar oynasini ko'rsatishimiz shart emas.

VBA 'Xato haqida' Excelda ishlamaydi

Ba'zan, Qanchalik urinmang, On Xato usuli ishlamaydi. Ilgari biz xatolarni bartaraf etish uchun On Error usulini qo'llagan edik. Ammo, ba'zida siz Keyingi xatoni davom ettirish yoki O'tish xatosi 0 dan foydalansangiz ham u xatolarni ko'rsatadi. Kodingizda tuzatishingiz kerak bo'lgan bir nechta sabablar bo'lishi mumkin. Men buni sizga ko'rsatmoqchi emasman.

VBA ' Xato haqida' Excelda ishlamaslikning asosiy sababi Excelda "Barcha xatolarni buzish" opsiyasini yoqishdir.

Buni hal qilish uchun quyidagi amallarni bajaring:

📌 Qadamlar

  • Avval, klaviaturada Alt+F11 tugmalarini bosing. VBA muharririni oching.
  • Endi Asboblar > Variantlar.

  • Bundan so'ng Tanlovlar muloqot oynasidagi Umumiy yorlig'ini bosing. qutisi.

  • Bu yerda “ Barcha xatolarni buzish ” allaqachon belgilab qoʻyilganligini koʻrishingiz mumkin. Bu, asosan, xatolarni hal qilishdan saqlaydi.
  • Uni oʻzgartirish uchun “ Ishlab boʻlmaydigan xatolarni sindirish ” variantini tanlang va OK tugmasini bosing.

Umid qilamanki, u Excelda ishlamayotgan VBA "Xatolik" muammosini hal qiladi.

Batafsil o'qing: Sabablari va Tuzatishlar

Hugh West - bu sohada 10 yildan ortiq tajribaga ega bo'lgan yuqori tajribali Excel treneri va tahlilchisi. Buxgalteriya hisobi va moliya yo‘nalishi bo‘yicha bakalavr va biznes boshqaruvi bo‘yicha magistr darajasiga ega. Xyu o'qitishga ishtiyoqi bor va unga amal qilish va tushunish oson bo'lgan o'ziga xos o'qitish usulini ishlab chiqdi. Uning Excel bo'yicha ekspert bilimlari butun dunyo bo'ylab minglab talabalar va mutaxassislarga o'z malakalarini oshirishga va o'z martabalarida muvaffaqiyat qozonishlariga yordam berdi. Xyu o'z blogi orqali o'z bilimlarini dunyo bilan baham ko'radi, jismoniy shaxslar va korxonalarga o'z salohiyatini to'liq ro'yobga chiqarishga yordam berish uchun bepul Excel darsliklari va onlayn treninglarni taklif qiladi.