Kesalahan VBA Goto 0 - Bagaimana Menggunakan Pada Kesalahan GoTo 0 di Excel VBA?

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 pengendalian ralat 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 perlu 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?

Contohnya, 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". Apabila kita menjalankan kod, ia akan mengalami ralat seperti di bawah.

Oleh kerana tidak ada lembaran yang disebut sebagai "Lembar1", itu telah menemui ralat "Langganan di luar jangkauan". Untuk mengatasi ralat ini, saya akan menambahkan pernyataan pengendali ralat "Pada Kesalahan Resume Selanjutnya" di bahagian atas makro.

Kod:

Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Pilih Range ("A1"). Value = 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 kesalahan sekiranya tidak ada lembaran kerja "Sheet1", tetapi kita perlu memberitahu jika tidak ada lembar kerja yang disebut "Sheet2".

Oleh kerana kita 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. Kami memerlukan ralat jika tidak ada lembaran kerja “Sheet2”. 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 setelah pelaksanaan kod melompat ke baris seterusnya, dan tugas baris aktif akan dilaksanakan. Sekarang garis aktif (garis berwarna kuning) adalah pengendali ralat "On Error Resume Next", dan pengendali ralat akan diaktifkan.

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

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

Tanpa memberikan apa-apa jenis 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 kod 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 penonaktif pengendali ralat, ia telah mula menunjukkan ralat itu 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 setelah keluar dari pengendali ralat subprosedur akan dinonaktifkan.

Artikel menarik...