Isi kandungan
Dalam Microsoft Excel VBA, pengendalian ralat adalah salah satu tugas kritikal. Jika anda seorang pengekod, anda tahu kepentingan pengendalian ralat untuk membina aplikasi yang sempurna. Sebarang kesilapan dalam kenyataan boleh menghalang kod VBA anda dalam banyak cara. Jadi, anda mesti berhati-hati untuk mengendalikan ralat tersebut semasa melaksanakan kod VBA. Terdapat banyak ralat masa jalan yang boleh anda hadapi semasa menggunakan kod VBA dalam Excel. Untuk menyelesaikan salah satu daripadanya, kami menggunakan penyataan Pada Ralat Resume Seterusnya .
Dalam tutorial ini, anda akan belajar menggunakan pernyataan Pada Ralat Resume Seterusnya dalam Excel VBA. Tutorial ini akan tepat dengan contoh yang sesuai dan ilustrasi yang betul. Jadi, kekal bersama kami.
Muat Turun Buku Kerja Amalan
VBA On Error Resume Next.xlsm
Ralat Pengendalian dalam Excel VBA
Semasa bekerja dengan Microsoft Excel VBA, anda akan menghadapi banyak ralat dalam sub-prosedur anda. Apabila VBA tidak dapat melaksanakan kenyataan, ia melemparkan ralat masa jalan.
Excel secara automatik menangani ralat ini, jadi apabila ralat masa jalan muncul, ia memaparkan mesej ralat lalai seperti berikut:
Kini, anda boleh menangani perkara ini secara pelbagai dengan beberapa pernyataan VBA. Saya akan membincangkannya dalam bahagian kemudian.
Baca Lagi: Cara Membetulkan #REF! Ralat dalam Excel (6 Penyelesaian)
Mengenai Pernyataan Ralat dalam VBA
Untuk mengendalikan ralat masa larian, kami mengarahkan Excel dengan pernyataan Ralat Pada. Ia memutuskandaripada NAME Ralat dalam Excel (10 Contoh)
💬 Perkara yang Perlu Diingati
✎ Pada Ralat Resume Seterusnya tidak membetulkan ralat. Ia pada asasnya mengabaikan ralat dan meneruskan ke pernyataan seterusnya.
✎ Excel memerangkap dan menyimpan ralat masa jalan dalam objek Err. Apabila kami menggunakan pernyataan On Error Resume Next , ia mengosongkan sifat objek Err.
✎ Anda boleh mematikan On Error Resume Next penyata dalam kod VBA anda dalam Excel dengan menambah On Error GoTo 0 statement.
Kesimpulan
Untuk membuat kesimpulan, saya harap tutorial ini telah memberikan anda sekeping berguna pengetahuan untuk menggunakan On Error Resume Next dalam Excel VBA. Saya mengesyorkan anda mempelajari dan menggunakan semua arahan ini pada set data anda. Muat turun buku kerja latihan dan cuba sendiri. Juga, jangan ragu untuk memberi maklum balas di bahagian komen. Maklum balas berharga anda membuatkan kami terus bersemangat untuk membuat tutorial seperti ini.
Jangan lupa untuk menyemak tapak web kami Exceldemy.com untuk pelbagai masalah dan penyelesaian berkaitan Excel.
Teruskan belajar kaedah baharu dan terus berkembang!
apakah jenis operasi yang ingin kami lakukan seterusnya. Pada asasnya, kami melumpuhkan ralat ini melalui pengendalian ralat jenis ini.Kami menggunakan tiga jenis penyataan On Error(sintaks) dalam Excel VBA.
- Pada Ralat GoTo baris
- Pada Ralat Sambung Semula Seterusnya
- Pada Ralat GoTo 0
Apabila anda menemui ralat, gunakan arahan On Error. Kerana jika anda tidak menggunakan perisytiharan Pada Ralat , ralat masa jalan tersebut akan membawa bencana. Ia akan menunjukkan gesaan ralat dan menghentikan pelaksanaan.
Apabila kami menggunakan pernyataan On Error , kami menghidupkan pengendali ralat "didayakan". Pengendali ralat "aktif" ialah pengendali yang didayakan yang memulakan operasi pengendalian ralat. Jika ralat timbul semasa pengendali ralat terlibat, pengendali ralat kaedah semasa tidak dapat menanggung ralat. Selepas itu, kawalan kembali kepada prosedur panggilan.
Jika proses panggilan mempunyai pengendali ralat yang didayakan, ia akan dicetuskan untuk mengurus ralat. Jika pengendali ralat sistem panggilan anda terlibat secara bersamaan, kawalan memberikan kembali melalui prosedur panggilan awal sehingga ia menemui pengendali ralat yang didayakan tetapi tidak aktif. Jika ia tidak menemui mana-mana pengendali ralat yang didayakan melahu, ini bermakna ralat adalah malapetaka pada titik kejadiannya.
Setiap kali pengendali ralat memberikan kuasa kembali kepada prosedur panggilan, prosedur itu mengubah prosedur sedia ada. Pelaksanaan dimulakan semula dalamprosedur sekarang pada masa yang dipilih oleh pernyataan Sambung Semula apabila pengendali ralat mengendalikan ralat dalam mana-mana prosedur.
'Pada Ralat Sambung Semula Seterusnya' dalam VBA
Kini, Pada Ralat Resume Seterusnya kenyataan memberitahu VBA untuk mengabaikan mana-mana baris kod yang mempunyai ralat, dan teruskan dengan segera ke baris kod berikut. Selepas itu, kod Excel VBA akan melangkau baris atau baris yang mengandungi ralat di dalamnya dan beralih kepada jujukan kod berikut.
Pernyataan Pada Ralat Sambung Seterusnya memaksa pelaksanaan untuk sambung semula dengan arahan serta-merta mengikuti baris kod yang menyebabkan ralat masa jalan. Pernyataan ini membenarkan pelaksanaan dilangkau walaupun terdapat ralat masa jalan. Jika anda fikir barisan kod tertentu boleh menghasilkan ralat, letakkan rutin pengendalian ralat di sana daripada meletakkannya di lokasi lain dalam prosedur. Pernyataan On Error Resume Next menjadi melahu apabila kod anda memanggil prosedur lain. Oleh itu, apabila anda memerlukan pengendalian ralat yang dipadankan dalam rutin itu, anda perlu menjalankan perintah On Error Resume Next dalam setiap corak yang dinamakan.
Adalah munasabah apabila baris kod yang anda boleh melangkau tidak perlu untuk menjalankan makro yang berkembang pesat. Tetapi ingat, ia boleh memudaratkan jika anda menggunakannya secara salah kerana ia mungkin memberikan hasil yang tidak diingini.
Ingat:
Aktif Ralat Sambung semula Pernyataan seterusnya tidakbetulkan ralat masa jalan. Ia pada asasnya mengabaikan ralat di mana pelaksanaan VB anda akan disambung semula daripada pernyataan yang telah menghasilkan ralat masa jalan.
Lihat kod berikut:
2624
Kami cuba membahagikan 5 dengan 0 dan 1. Mari jalankan kod tersebut. Ia akan menunjukkan output berikut:
Ia menghasilkan ralat masa jalan. Kami tidak boleh membahagikan nombor dengan 0. Apabila anda menyahpepijat kod, anda akan melihat perkara berikut:
Apabila program VB menemui ralat, ia segera menghentikan prosedur. Ia tidak melaksanakan baris berikut.
Sekarang, mari kita laksanakan On Error Resume Next penyataan sebelum pernyataan ralat:
7482
Selepas menjalankan kod, anda akan lihat yang berikut:
Seperti yang anda boleh lihat, VBA mengabaikan baris yang menghasilkan ralat dan terus ke baris kod berikut. Dengan cara ini, anda boleh menggunakan penyataan On Error Resume Next untuk mengendalikan ralat dalam Excel VBA.
Contoh 'On Error Resume Next' dalam VBA
In bahagian berikut, saya akan memberikan anda dua contoh pernyataan On Error Resume Next yang anda boleh laksanakan ke dalam lembaran kerja Excel anda menggunakan VBA. Saya mengesyorkan anda mempelajari dan menggunakan semua ini pada buku kerja anda. Ia pasti akan meningkatkan pengetahuan Excel anda.
1. Pernyataan ‘On Error Resume Next’ untuk Menyembunyikan Lembaran Kerja
Sekarang, dalam contoh ini, saya akan menunjukkan kepada anda kod VBA yangakan menyembunyikan semua lembaran kerja buku kerja aktif anda.
Lihat tangkapan skrin berikut:
Di sini, kami mempunyai empat lembaran kerja. Kami akan menyembunyikan kesemuanya menggunakan kod VBA berikut:
2781
Apabila anda melaksanakan kod berikut, anda akan melihat ralat masa jalan berikut:
Excel menunjukkan ralat ini kerana anda tidak boleh menyembunyikan semua helaian dalam buku kerja. Jadi, anda perlu mengabaikan kesilapan itu. Untuk melakukan ini, anda perlu melaksanakan kenyataan On Error Resume Next dalam baris kod anda.
4340
Selepas melengkapkan pelaksanaan kod VBA, anda akan melihat output berikut:
Akhirnya, anda tidak akan melihat sebarang ralat selepas pelaksanaan. Jadi, kenyataan On Error Resume Next kami berfungsi dengan baik dalam kod VBA.
Baca Lagi: Ralat dalam Excel dan Maksudnya (15 Ralat Berbeza)
2. Fungsi VLOOKUP dengan 'On Error Resume Next' dalam VBA
Dalam contoh ini, saya akan menunjukkan contoh fungsi VLOOKUP dalam VBA . Kini, kod VBA ini juga termasuk penyataan On Error Resume Next .
Lihat tangkapan skrin berikut:
Di sini , anda boleh melihat beberapa nama orang dan umur mereka. Dalam jadual bersebelahan, kami akan menggunakan VLOOKUP untuk mencari nama dan umur orang itu.
Taip kod berikut untuk melakukan ini:
1367
Sekarang, jalankan makro . Anda akan melihat ralat berikut:
Sekarang, ini ialah masa jalankesilapan. Mengapa ia berlaku? Lihat set data sekali lagi:
Seperti yang anda lihat, tiada data untuk “Aaron” dan “Emma”. Itulah sebabnya ia hanya melaksanakan VLOOKUP untuk entri pertama. Selepas itu, ia menghentikan pelaksanaan. Sekarang, jika anda ingin mengabaikan ralat dan teruskan mencari umur yang lain, gunakan pernyataan On Error Resume Next .
8955
Selepas menjalankan kod VBA, anda akan melihat output berikut:
Seperti yang anda lihat, dengan menggunakan perintah On Error Resume Next , kami mengabaikan ralat dan mendapati orang yang lain' umur. Kod VBA kami tidak menemui sebarang data Aaron dan Emma. Itulah sebabnya ia mengabaikan nilai tersebut dan mengembalikan nilai yang selebihnya dalam lembaran kerja Excel.
Baca Lagi: [Tetap] Excel Mendapat Masalah dengan Satu atau Lebih Rujukan Formula dalam Lembaran Kerja Ini
Matikan 'Hidupkan Ralat Sambung Seterusnya' dengan Excel VBA
Sekarang, anda mungkin berada dalam situasi di mana anda ingin mengabaikan ralat untuk segmen tertentu kod VBA. Ingat, jika anda menggunakan penyataan On Error Resume Next dalam kod VBA, ia akan melangkau semua ralat selepas itu. Sekarang, jika anda ingin mematikannya dan mendayakan pengendalian ralat untuk segmen lain, gunakan On Error GoTo 0 . Ia akan mendayakan pengendalian ralat sekali lagi.
Penggunaan generik:
Sub error_handling()
Untuk mengabaikan ralat
Pada Ralat Sambung Semula Seterusnya
// baris kod
Kepadahidupkan Ralat pengendalian
Hidupkan Ralat GoTo 0
//baris kod
Tamatkan sub
Lihat kod VBA berikut:
6198
Kami menggunakan kod sebelum ini untuk fungsi VLOOKUP . Di sini menambah sebahagian tambahan kod untuk menunjukkan anda. Kod kami akan mengabaikan ralat semasa melakukan VLOOKUP tetapi ia akan mengaktifkan pengendalian ralat selepas kenyataan On Error GoTo 0 .
Baca Lagi: Excel VBA: Matikan “On Error Resume Next”
VBA 'On Error GoTo'
Sebelum ini saya telah membincangkan mengendalikan ralat menggunakan kaedah On Error. Keseluruhan artikel kami adalah mengenai Pada Ralat Resume Seterusnya. Kini, terdapat juga dua jenis pengendalian ralat yang akan saya bincangkan dalam bahagian berikut.
1. VBA On Error GoTo 0
The On Error Goto 0 penyataan ialah tetapan terbina dalam Excel jika kod anda tidak mempunyai pengendali ralat di dalamnya. Ia pada asasnya membayangkan bahawa apabila VBA menemui ralat dengan On Error GoTo 0 , ia akan berhenti menjalankan kod dan menunjukkan kotak mesej ralat tradisionalnya.
On Error GoTo 0 kenyataan pada dasarnya mematikan pengendalian ralat dalam prosedur sekarang. Ia tidak mentakrifkan baris 0 sebagai permulaan kod pengendalian ralat, walaupun kaedah itu menggabungkan baris bernombor 0.
Lihat kod berikut:
9597
Kami ada sudah menunjukkan kepada anda kod ini. Kod ini pada asasnya menyembunyikan semua lembaran kerjadalam buku kerja semasa anda. Sekarang, saya sememangnya mempunyai sekeping kod tambahan dengan On Error GoTo 0 untuk menunjukkan ralat. Jika anda menjalankan kod, anda akan melihat perkara berikut:
Ia menunjukkan ralat ini kerana kami tidak boleh mempunyai helaian dengan nama yang sama dalam buku kerja aktif.
2. VBA Pada baris Ralat GoTo
Sekarang, anda juga boleh mengarahkan Excel untuk menjalankan segmen kod lain jika ia menemui sebarang ralat dengan menggunakan baris On Error GoTo . Ia memberitahu Excel untuk melaksanakan sesuatu selepas menemui ralat.
Argumen baris ialah sebarang teg baris atau nombor baris. Jika kod kami menyebabkan sebarang ralat masa jalan, ia akan berpindah ke baris, menyebabkan pengendali ralat aktif dalam pelaksanaan. Ingat, baris yang ditakrifkan anda mestilah mengikut prosedur yang tepat seperti pernyataan On Error; jika tidak, ia akan menyebabkan ralat penyusunan.
Lihat kod berikut:
6188
Anda melihat kod dalam contoh sebelumnya. Apabila kami menggunakan On Error GoTo 0 , ia menyebabkan ralat. Tetapi, di sini kami menggantikannya dengan On Error GoTo line statement.
Sekarang, jalankan kod dan anda akan melihat perkara berikut:
Seperti yang anda lihat, ia tidak menunjukkan kepada kami kotak dialog ralat standard. Sebaliknya, ia menunjukkan kotak mesej tersuai yang kami buat dalam segmen error_handler . Apabila Excel menemui sebarang ralat, ia melompat ke segmen error_handler dan menunjukkan kepada kami kotak mesej.
Kami juga menggunakan Exit Sub dalam prosedur.Jika tiada helaian bernama " VLOOKUP ", kod VBA kami akan menamakan semula helaian aktif. Kemudian, kita perlu menyelesaikan pelaksanaan di sini kerana kita tidak perlu meneruskan kepada pengendali ralat dan memaparkan kotak mesej.
VBA 'On Error' Not Working in Excel
Kadang-kadang, tidak kira seberapa keras anda mencuba, kaedah On Error tidak akan berfungsi. Sebelum ini, kami melaksanakan kaedah Pada Ralat untuk mengendalikan ralat. Tetapi, kadangkala ia akan menunjukkan ralat walaupun anda menggunakan On Error Resume Next atau On Error GoTo 0 . Mungkin terdapat beberapa sebab dalam kod anda yang perlu anda betulkan. Saya tidak akan menunjukkan perkara itu kepada anda.
Sebab asas VBA ' On Error' Tidak Berfungsi dalam Excel ialah menghidupkan pilihan "Hentikan Semua Ralat" dalam Excel.
Ikuti langkah ini untuk menyelesaikannya:
📌 Langkah
- Mula-mula, tekan Alt+F11 pada papan kekunci anda untuk buka editor VBA.
- Sekarang, klik pada Alat > Pilihan.
- Selepas itu, klik pada tab Umum dalam dialog Pilihan kotak.
- Di sini, anda boleh lihat, “ Hapuskan Semua Ralat ” sudah ditandakan. Ia pada asasnya menghalang anda daripada mengendalikan ralat.
- Untuk menukarnya, pilih pilihan “ Hentikan Ralat Tidak Terkendali ” dan klik pada OK .
Saya harap ini akan menyelesaikan masalah anda VBA “On Error” tidak berfungsi dalam Excel.
Baca Lagi: Sebab dan Pembetulan