VBA On Error Goto 0

Excel VBA Pada Kesalahan Goto 0

VBA On Error GoTo 0 adalah pernyataan penanganan kesalahan yang digunakan untuk menonaktifkan penangan kesalahan yang diaktifkan dalam prosedur. Ini disebut sebagai "Error Handler Disabler".

Penanganan kesalahan dalam salah satu bahasa pemrograman adalah kelas master yang perlu dipahami oleh semua pembuat kode. Bahasa pemrograman VBA juga, dan kami juga memiliki teknik penanganan kesalahan dalam bahasa pemrograman ini. "On Error Resume Next" mengaktifkan penangan kesalahan dan "On Error GoTo 0" akan menonaktifkan penangan kesalahan yang diaktifkan.

Baik "On Error Resume Next" & "On Error GoTo 0" adalah pasangan yang perlu digunakan bersama-sama untuk efisiensi kode. Untuk menangani error kita perlu memulai dengan pernyataan "On Error Resume Next" dan untuk mengakhiri penanganan error ini kita perlu menggunakan pernyataan "On Error GoTo 0".

Kode baris apa pun yang ditulis di antara pernyataan ini akan mengabaikan segala jenis kesalahan yang terjadi dalam proses.

Bagaimana cara menggunakan Pernyataan On Error GoTo 0?

Anda dapat mengunduh Template Excel VBA On Error Goto 0 ini di sini - Template VBA On Error Goto 0 Excel

Untuk contoh lihat kode di bawah ini.

Kode:

 Sub On_ErrorExample1 () Lembar Kerja ("Sheet1"). Pilih Rentang ("A1"). Nilai = 100 Lembar Kerja ("Lembar2"). Pilih Rentang ("A1"). Nilai = 100 End Sub 

Apa yang dilakukan kode di atas adalah pertama-tama akan memilih lembar kerja bernama "Sheet1" dan di sel A1 akan memasukkan nilai 100.

Kode:

Lembar Kerja ("Sheet1"). Pilih Range ("A1"). Nilai = 100

Kemudian itu akan memilih lembar kerja bernama "Sheet2" dan memasukkan nilai yang sama.

Kode:

Lembar Kerja ("Sheet2"). Pilih Range ("A1"). Nilai = 100

Sekarang saya memiliki lembar di bawah ini di buku kerja saya.

Tidak ada sheet yang bernama “Sheet1” & “Sheet2”, ketika kita menjalankan kode akan menemui error seperti di bawah ini.

Karena tidak ada sheet yang dinamai "Sheet1", ia mengalami kesalahan "Subscript out of range". Untuk menangani kesalahan ini saya akan menambahkan pernyataan penanganan kesalahan "On Error Resume Next" di bagian atas makro.

Kode:

 Sub On_ErrorExample1 () Pada Kesalahan Lanjutkan Lembar Kerja Berikutnya ("Sheet1"). Pilih Rentang ("A1"). Nilai = 100 Lembar Kerja ("Lembar2"). Pilih Rentang ("A1"). Nilai = 100 End Sub 

Sekarang jalankan kode dan lihat apa yang terjadi.

Itu tidak akan memberikan pesan kesalahan karena pernyataan penanganan kesalahan On Error Resume Next diaktifkan.

Bayangkan skenario di mana kita perlu mengabaikan kesalahan jika lembar kerja "Sheet1" tidak tersedia tetapi kita perlu memberi tahu jika tidak ada lembar kerja yang disebut "Sheet2".

Karena kita telah menambahkan On Error Resume Next di bagian atas, itu sudah mulai menangani kesalahan tetapi pada saat yang sama, kita perlu menentukan berapa banyak baris yang perlu kita abaikan kesalahan ini.

Dalam contoh ini, kita hanya perlu mengabaikan kesalahan untuk lembar kerja pertama tetapi untuk lembar kedua dan seterusnya, kesalahan terjadi jika tidak ada lembar kerja “Lembar2”. Jadi setelah kode lembar kerja pertama menambahkan baris menonaktifkan kesalahan On Error GoTo 0.

Kode:

 Sub On_ErrorExample1 () Pada Kesalahan Lanjutkan Lembar Kerja Berikutnya ("Sheet1"). Pilih Rentang ("A1"). Nilai = 100 Pada Kesalahan GoTo 0 Lembar Kerja ("Sheet2"). Pilih Rentang ("A1"). Nilai = 100 Akhiri Sub 

Sekarang jalankan kode baris demi baris untuk melihat dampaknya dengan menekan tombol F8.

Sekarang jika Anda menekan tombol F8 setelah eksekusi kode akan melompat ke baris berikutnya dan tugas baris aktif akan dijalankan. Sekarang baris aktif (garis berwarna kuning) adalah penanganan kesalahan "On Error Resume Next" dan pengendali kesalahan akan diaktifkan.

Sekarang setiap kesalahan yang terjadi akan diabaikan sampai menjalankan penangan kesalahan menonaktifkan kode pernyataan " On Error GoTo 0 ".

Pada percobaan sebelumnya, kami menemukan kesalahan tetapi tekan tombol F8 sekali lagi dan lihat keajaibannya.

Tanpa memberikan kesalahan apa pun, ia telah melanjutkan eksekusi kode meskipun tidak ada lembar kerja "Sheet2" untuk dipilih. Sekarang tekan F8 lagi.

Karena tidak ada Sheet1, ia tidak dapat memasukkan nilai di sel A1 sebagai 500 tetapi yang dilakukannya adalah akan memasukkan nilai 500 ke sel A1 lembar kerja mana pun yang aktif. Lembar aktif saya ketika saya mengeksekusi kode adalah "Sheet3", sehingga nilai 100 dimasukkan ke sel A1.

Sekarang baris kode yang aktif adalah “ On Error GoTo 0 ”, dengan menekan tombol F8, tugas baris ini akan dijalankan.

Sejak "On Error GoTo 0" dijalankan itu telah menghentikan proses penanganan kesalahan dan sekali lagi mulai menunjukkan kesalahan jika terjadi. Tekan tombol F8 dan lihat kesalahannya.

Dalam kasus sebelumnya tanpa On Error GoTo 0, error ini juga diabaikan, tetapi karena kami telah menambahkan penangan error disabler, error ini mulai ditampilkan lagi.

Hal-hal yang Perlu Diingat di sini

  • Baik On Error Resume Next dan On Error GoTo 0 harus digunakan sebagai " Pengaktif Penangan Kesalahan " dan " Penanganan Kesalahan Penanggulangan ".
  • Setiap baris kode di antara kedua pernyataan ini mengalami kesalahan, itu akan diabaikan.
  • Jika ada pernyataan On Error GoTo 0 maka setelah keluar dari subprocedure error handler akan dinonaktifkan.