VBA On Error

Excel VBA Pada Pernyataan Kesalahan

Pernyataan VBA On Error adalah jenis mekanisme penanganan kesalahan yang digunakan untuk memandu kode untuk melakukan apa jika menemukan jenis kesalahan apa pun, umumnya ketika kode menemukan kesalahan, eksekusi berhenti tetapi dengan pernyataan ini dalam kode pelaksanaan eksekusi kode berlanjut seperti yang telah ditetapkan instruksi yang harus dilakukan ketika menemui kesalahan.

Mengantisipasi kesalahan dalam kode membuat Anda menjadi ahli dalam pengkodean VBA. Anda tidak dapat membuat kode 100% efisien, bahkan jika Anda yakin tentang kode Anda satu atau lain cara itu dapat menimbulkan kesalahan.

Hampir tidak mungkin untuk mengidentifikasi dan menangani setiap jenis kesalahan, tetapi kami memiliki cara berbeda untuk menangani kesalahan di VBA. Saat menulis kode, Anda mungkin tidak mengantisipasi jenis kode kesalahan yang dapat muncul, tetapi jika ada kesalahan, Anda akan menghabiskan lebih banyak waktu dalam debugging daripada menulis kode itu sendiri.

Apa itu Error?

Kesalahan tidak lain adalah sebaris kode tidak dapat dijalankan karena fungsionalitas atau kode yang salah. Jadi usahakan untuk mengantisipasi kesalahan tersebut dan menanganinya.

Misalnya, jika Anda mencoba menghapus lembar yang tidak ada di sana maka jelas kami tidak dapat mengeksekusi baris kode itu.

Salah satu dari tiga jenis kesalahan adalah kesalahan yang dikompilasi karena variabel yang tidak dideklarasikan. Yang kedua adalah kesalahan entri data karena entri yang salah oleh pembuat kode, dan yang ketiga adalah kesalahan waktu berjalan karena VBA tidak dapat mengenali baris kode. Untuk mencoba mengakses atau mengerjakan lembar kerja atau buku kerja yang tidak ada.

Tapi kami memiliki pernyataan di VBA untuk menangani semua jenis kesalahan ini yaitu pernyataan "On Error".

Jenis Pernyataan On Error

Poin kunci dari penanganan error di VBA adalah pernyataan "On Error". Misalnya Pada Kesalahan "lanjutkan baris berikutnya", "pindah ke atau lompat ke baris lain", dll…

Pernyataan On Error memiliki tiga jenis pernyataan.

  1. GoTo 0  berarti setiap kali kesalahan waktu berjalan terjadi, excel atau VBA harus menampilkan kotak pesan kesalahan yang mengatakan jenis kesalahan yang ditemui. Segera setelah VBA menjalankan kode, VBA menonaktifkan semua penangan kesalahan di blok tertentu pada kode tersebut.
  2. Resume Next berarti setiap kali kesalahan terjadi pernyataan ini menginstruksikan excel untuk mengabaikan kesalahan itu dan melanjutkan ke (melanjutkan berikutnya) baris kode berikutnya tanpa menampilkan pesan kesalahan apa pun. Ini tidak berarti itu akan memperbaiki kesalahan melainkan hanya mengabaikan kesalahan.
  3. GoTo [label] berarti setiap kali VBA menemukan kesalahan, pergi ke label yang ditetapkan. Ini membuat kode melompat ke baris tertentu yang disediakan oleh pembuat kode.

3 Cara Teratas untuk Menangani Error di VBA

Anda dapat mengunduh VBA On Error Template ini di sini - VBA On Error Template

# 1 - Saat Kesalahan Lanjutkan Berikutnya

Asumsikan Anda membagi nilai 20 dengan 0 dan Anda telah mendeklarasikan variabel untuk menetapkan hasil pembagiannya.

Kode:

 Sub OnError_Example1 () Dim i Sebagai Integer i = 20/0 End Sub 

Jika Anda menjalankan kode ini, itu akan memunculkan kesalahan di bawah ini.

Jadi, Anda tidak dapat membagi angka apa pun dengan nilai nol. Nomor kesalahan waktu berjalan adalah 11 yaitu Divisi oleh Nol.

Sekarang saya akan menambahkan satu baris lagi ke kode.

Kode:

 Sub OnError_Example1 () Dim i Sebagai Integer, j Sebagai Integer i = 20/0 j = 20/2 End Sub 

Sekarang saya akan menambahkan pernyataan On error resume berikutnya di atas.

Kode:

 Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Resume Berikutnya i = 20/0 j = 20/2 End Sub 

Sekarang jika saya menjalankan kode ini, ia tidak akan memberi saya pesan kesalahan, melainkan akan mengeksekusi baris kode berikutnya yaitu j = 20/2.

# 2 - Pada Kesalahan GoTo Label

Saya telah menyatakan tiga variabel.

Kode:

 Sub OnError_Example1 () Dim i Sebagai Integer, j Sebagai Integer, k Sebagai Integer 

Untuk ketiga variabel ini saya akan memberikan perhitungan pembagian.

Kode:

 Sub OnError_Example1 () Dim i Sebagai Integer, j Sebagai Integer, k Sebagai Integer i = 20/0 j = 20/2 k = 10/5

Hasil dari ketiga penghitungan ini akan ditampilkan di kotak pesan.

Kode:

 Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "Nilai i adalah" & i & vbNewLine & "Nilai j adalah "& j & _ vbNewLine &" Nilai k adalah "& k & vbNewLine End Sub 

Sekarang saya akan mencoba mengeksekusi kode ini karena perhitungan “I” tidak tepat kita akan mendapatkan run time error 11.

Sekarang saya akan menambahkan pernyataan "On Error Resume Next".

Kode:

 Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error Resume Selanjutnya i = 20/0 j = 20/2 k = 10/5 MsgBox "Nilai i adalah" & i & vbNewLine & "The nilai j adalah "& j & _ vbNewLine &" Nilai k adalah "& k & vbNewLine End Sub 

Jika saya melakukan ini, ia akan melewatkan perhitungan “I” dan mengeksekusi dua perhitungan yang tersisa dan hasilnya adalah sebagai berikut.

Sekarang alih-alih "On Error Resume Next", saya akan menambahkan "On Error GoTo KCalculation"

Kode:

 Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error GoTo KHitung: i = 20/0 j = 20/2 K Perhitungan: k = 10/5 MsgBox "Nilai i adalah" & i & vbNewLine & "Nilai j adalah" & j & _ vbNewLine & "Nilai k adalah" & k & vbNewLine End Sub 

Catatan: Disini “KCalculation” adalah nama label yang saya berikan, Anda dapat memberikan nama label Anda sendiri tanpa spasi.

Sekarang jika saya mengeksekusi baris kode ini, ia tidak akan melompat ke baris berikutnya melainkan akan melompat ke nama label yang telah saya masukkan yaitu "KCalcualtion". Di sini ia akan mengabaikan kesalahan yang diberikan oleh "I" dan juga tidak akan mengeksekusi perhitungan "j" tetapi langsung melompat ke "KCalcualtion".

# 3 - Cetak Nomor Kesalahan di VBA

Di akhir kode, kami juga dapat mencetak nomor kesalahan di kotak pesan terpisah. Baris kode berikut akan melakukan pekerjaan ini.

Kode:

Err.Number

Sekarang saya akan menjalankan kode ini kotak pesan pertama akan menampilkan hasil perhitungan.

Klik OK, itu akan menampilkan satu kotak pesan lagi untuk menunjukkan nomor kesalahan.

Kami pergi 11 sebagai hasilnya yaitu Divisi oleh Nol.

We can also get the error description instead of the number. We just need to change the code, below is the code.

Code:

Err.Description

It will show a description like this.

Things to Remember

  • After entering “On Error Resume Next” at the end of code don’t forget to add the statement “On Error GoTo 0”
  • The label name should be the same in both places.
  • Label names need not be defined well in advance.
  • In the end, always see what was the error occurred through the separate message box.