Kesalahan VBA GoTo

Excel VBA Pada Kesalahan GoTo

Kesalahan adalah sebahagian daripada bahasa pengekodan dan makro VBA tidak berbeza dari ini. Pada pendapat saya, mencari mengapa kesalahan berlaku adalah 90% daripada pekerjaan yang dilakukan dan 10% terletak pada cara memperbaiki kesalahan itu. Dalam setiap bahasa pengekodan pengekod menggunakan cara mereka sendiri untuk menangani kesalahan dalam pengekodan mereka, begitu juga kita menggunakan dalam pengekodan VBA. Sering kali kita perlu mengabaikan kesalahan atau sering kali kita mahu pergi ke perkara-perkara tertentu semasa kesalahan itu berlaku. "On Error" adalah pernyataan yang perlu kita gunakan dalam VBA untuk menangani kesalahan.

Pernyataan ini mempunyai tiga jenis pernyataan dan di bawah adalah senarai.

  1. Pada Ralat Goto 0
  2. Pada Ralat Goto [label]
  3. Pada Ralat Sambung Seterusnya

Dalam artikel ini, kita akan melihat bagaimana ketiga-tiga pernyataan ini digunakan dalam pengekodan VBA untuk menangani segala jenis kesalahan.

Bagaimana cara menggunakan Pernyataan Ralat VBA?

Anda boleh memuat turun Templat Pernyataan VBA On Error GoTo ini di sini - Templat Pernyataan VBA On Error GoTo

# 1 - Pada Kesalahan Lanjutkan Seterusnya

Seperti pernyataan itu sendiri mengatakan "On Error Resume Next" bermaksud setiap kali kesalahan berlaku dalam kod "resume" baris seterusnya kod dengan mengabaikan kod garis kesalahan. Sekarang perhatikan kod di bawah.

Dalam kod di bawah ini saya telah menyebutkan nama lembaran kerja dan meminta untuk memasukkan nilai pada sel pertama sebagai "Ujian Ralat".

Kod:

 Sub On_Error_Resume_Next () Lembaran Kerja ("Ws 1"). Pilih Julat ("A1"). Nilai = "Ujian Ralat" Lembaran Kerja ("Ws 2"). Pilih Julat ("A1"). Nilai = "Ujian Ralat" Lembaran Kerja ( "Ws 3"). Pilih Julat ("A1"). Nilai = "Ujian Ralat" Lembaran Kerja ("Ws 4"). Pilih Julat ("A1"). Nilai = "Ujian Ralat" Sub Akhir 

Sekarang saya mempunyai lembaran kerja di bawah dalam buku kerja saya.

  • Saya akan menjalankan kod dan melihat apa yang berlaku.

  • Kami mendapat ralat "Subscript Out of Range", klik "Debug" untuk melihat baris mana kami mendapat ralat.

  • Jadi di baris "Lembaran Kerja (" Ws 3 "). Pilih" kami mendapat kesalahan, ini kerana di buku kerja kami tidak ada lembar kerja yang dinamakan sebagai "Ws 3", sehingga mengalami kesalahan.

Dalam kes seperti ini, kami mungkin ingin mengabaikan kesalahan dan meneruskan pelaksanaan kod ke baris berikutnya, di sinilah pengendali ralat "On Error Resume Next" kami muncul dalam gambar.

  • Yang perlu kita lakukan hanyalah menambahkan baris "On Error Resume Next" pada permulaan makro.

Sekarang jalankan kod ini dan tidak akan menunjukkan sebarang pesan kesalahan kerana setiap kali kod mengalami kesalahan, ia akan mengabaikan kesalahan dan meneruskan ke baris kod seterusnya.

# 2 - Pada Kesalahan GoTo 0

Ini bukan pengendali ralat sebaliknya pemboleh mesej ralat setelah kami mematikan mesej ralat dengan menggunakan pernyataan “On Error Resume Next”.

Yang anda gunakan pernyataan "Resume Next" makro VBA mula mengabaikan segala jenis kesalahan yang berlaku dan terus meneruskan baris kod seterusnya. Tetapi kami tidak mahu perkara ini terjadi sepanjang masa kerana beberapa kesilapan yang perlu kami abaikan dengan sengaja dan kami memerlukan pemberitahuan.

Sekiranya ada sekumpulan kod tertentu yang menyebabkan kesalahan dalam sekatan kod tersebut, kita hanya perlu mengabaikan kesalahan bahagian kod yang lain dan kita tidak mahu mengabaikan kesalahan tersebut.

  • Lihat gambar di bawah untuk penggunaan pernyataan “On Error GoTo 0”.

Jadi sekarang kesalahan akan diabaikan sehingga kod mendapati kesalahan memberitahu pemberi maklumat "On Error GoTo 0". Setelah baris kod ini menjalankan makro kembali normal dan mula membuang mesej ralat seperti biasa.

# 3 - Pada Kesalahan Label GoTo

Kami telah melihat bagaimana untuk mengabaikan ralat dan bagaimana mengaktifkan kembali untuk memberitahu kesalahan. Dengan menggunakan kaedah ini, kita boleh pergi ke baris kod tertentu.

Dalam kaedah ini "Label" bermaksud kita dapat memberikan nama apa pun pada label ini dan label yang sama harus diberikan pada baris kod yang diperlukan juga.

Sebagai contoh, lihat kod yang sama dari contoh di atas.

Sekarang mari kita laksanakan kod baris demi baris dengan menekan kekunci fungsi F8.

Sekarang makro akan membaca pernyataan pengendali ralat, tekan kekunci F8 laksanakan kod 2 lembaran kerja pertama.

Sekarang makro akan melaksanakan kod lembaran kerja ketiga yang tidak ada di buku kerja, tekan kekunci F8, dan lihat apa yang berlaku.

Oleh kerana makro mengalami kesalahan pada baris kod di bawah, ia telah melonjak ke label pengendali ralat "ErrorMessage" yang dijelaskan melalui pernyataan "On Error GoTo [Label]".

Sekarang kotak mesej akan menunjukkan mesej sebagai "Kesalahan Berlaku & Keluar dari Makro".

Perkara yang Perlu Diingat

  • VBA On Error GoTo 0 akan mengaktifkan pemberitahuan ralat sekali lagi, jadi jangan lupa untuk menambahkannya setelah memberikan pengendali ralat.
  • Anda harus benar-benar yakin di bahagian mana kod yang anda ingin abaikan kesalahannya, jadi sertakan pengendali ralat hanya untuk sekatan kod tersebut.