Kesalahan VBA Goto 0

Excel VBA Mengenai Ralat Pergi 0

VBA On Error GoTo 0 adalah pernyataan pengendali ralat yang digunakan untuk mematikan pengendali ralat yang diaktifkan dalam prosedur. Ini disebut sebagai "Error Handler Disabler".

Kesalahan pengendalian dalam mana-mana bahasa pengaturcaraan adalah kelas induk yang perlu difahami oleh semua pengekod. Bahasa pengaturcaraan VBA juga, dan kami juga memiliki teknik menangani kesalahan dalam bahasa pengaturcaraan ini. "On Error Resume Next" membolehkan pengendali ralat dan "On Error GoTo 0" akan menonaktifkan pengendali ralat yang diaktifkan.

Kedua "On Error Resume Next" & "On Error GoTo 0" adalah pasangan yang perlu digunakan bersama untuk kecekapan kod. Untuk mengatasi ralat, kita harus mulai dengan pernyataan "On Error Resume Next" dan untuk mengakhiri pengendali ralat ini kita harus menggunakan pernyataan "On Error GoTo 0".

Sebarang kod baris yang ditulis di antara pernyataan ini akan mengabaikan segala jenis kesalahan yang berlaku dalam proses tersebut.

Bagaimana cara menggunakan Pernyataan On Error GoTo 0?

Anda boleh memuat turun Templat VBA On Error Goto 0 Excel ini di sini - Templat VBA On Error Goto 0 Excel

Sebagai contoh lihat kod di bawah.

Kod:

 Sub On_ErrorExample1 () Lembaran Kerja ("Lembaran1"). Pilih Julat ("A1"). Nilai = 100 Lembaran Kerja ("Lembaran2"). Pilih Julat ("A1"). Nilai = 100 Sub Akhir 

Apa yang dilakukan oleh kod di atas adalah terlebih dahulu memilih lembaran kerja bernama "Sheet1" dan di sel A1 ia akan memasukkan nilai 100.

Kod:

Lembaran kerja ("Lembaran1"). Pilih Julat ("A1"). Nilai = 100

Kemudian ia akan memilih lembaran kerja bernama "Sheet2" dan memasukkan nilai yang sama.

Kod:

Lembaran kerja ("Lembaran2"). Pilih Julat ("A1"). Nilai = 100

Sekarang saya mempunyai helaian di bawah dalam buku kerja saya.

Tidak ada helaian yang disebut "Sheet1" & "Sheet2", ketika kita menjalankan kod, ia akan mengalami kesalahan seperti di bawah.

Oleh kerana tidak ada lembaran yang disebut sebagai "Lembar1", ia telah menemui kesalahan "Langganan di luar jangkauan". Untuk mengatasi ralat ini, saya akan menambah pernyataan pengendali ralat "Pada Ralat Ralat Seterusnya" di bahagian atas makro.

Kod:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Pilih Julat ("A1"). Nilai = 100 Lembaran Kerja ("Sheet2"). Pilih Julat ("A1"). Nilai = 100 Sub Akhir 

Sekarang jalankan kod dan lihat apa yang berlaku.

Ia tidak akan memberikan sebarang mesej ralat kerana pernyataan pengendali ralat Pada Kesalahan Resume Selanjutnya diaktifkan.

Bayangkan senario di mana kita perlu mengabaikan ralat sekiranya tidak ada lembaran kerja "Sheet1" tetapi kita perlu memberitahu jika tidak ada lembar kerja yang disebut "Sheet2".

Oleh kerana kami telah menambahkan On Error Resume Next di bahagian atas, ia telah mula menangani ralat tetapi pada masa yang sama, kita perlu menentukan berapa banyak baris yang kita perlukan untuk mengabaikan ralat ini.

Dalam contoh ini, kita hanya perlu mengabaikan ralat untuk lembaran kerja pertama tetapi untuk helaian kedua dan seterusnya kita memerlukan ralat jika tidak ada lembaran kerja "Lembar2". Jadi setelah kod lembaran kerja pertama menambah ralat lumpuhkan baris Pada Kesalahan GoTo 0.

Kod:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Select Range ("A1"). Value = 100 On Error GoTo 0 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

Sekarang jalankan baris demi baris kod untuk melihat kesannya dengan menekan kekunci F8.

Sekarang jika anda menekan kekunci F8 sekali pelaksanaan kod akan melompat ke baris seterusnya dan tugas baris aktif akan dijalankan. Sekarang garis aktif (garis berwarna kuning) adalah pengendali ralat "On Error Resume Next" dan pengendali ralat akan diaktifkan.

Sekarang kesalahan berlaku, ia akan diabaikan sehingga melaksanakan pengendali ralat mematikan kod " On Error GoTo 0 " pernyataan.

Dalam percubaan sebelumnya, kami telah menemui kesilapan tetapi tekan kekunci F8 sekali lagi dan lihat keajaibannya.

Tanpa memberikan apa-apa kesalahan, ia telah meneruskan pelaksanaan kodnya walaupun tidak ada lembaran kerja "Sheet2" untuk dipilih. Sekarang tekan F8 sekali lagi.

Oleh kerana tidak ada Sheet1, ia tidak dapat memasukkan nilai dalam sel A1 sebagai 500 tetapi apa yang dilakukannya akan memasukkan nilai 500 ke sel A1 mana sahaja lembaran kerja yang aktif. Lembaran aktif saya ketika saya menjalankan kodnya adalah "Sheet3", jadi nilai 100 dimasukkan ke sel A1.

Sekarang baris aktif kod adalah " On Error GoTo 0 ", dengan menekan kekunci F8 tugas baris ini akan dilaksanakan.

Sejak "On Error GoTo 0" dijalankan, ia telah menghentikan proses pengendalian ralat dan sekali lagi mula menunjukkan kesalahan jika ada. Tekan kekunci F8 dan lihat ralatnya.

Dalam kes sebelumnya tanpa On Error GoTo 0, ia juga telah mengabaikan ralat ini, tetapi kerana kami telah menambahkan penangan ralat disabler, ia telah mula menunjukkan ralat lagi.

Perkara yang Perlu Diingat di sini

  • Kedua-dua On Error Resume Next dan On Error GoTo 0 perlu digunakan sebagai " Error Handler Enabler " dan " Error Handler Disabler ".
  • Sebarang baris kod di antara kedua-dua pernyataan ini mengalami kesalahan, ia akan diabaikan.
  • Sekiranya terdapat pernyataan On Error GoTo 0 maka selepas keluarnya pengendali ralat subprosedur akan dilumpuhkan.