VBA Pada Pernyataan Kesalahan - 3 Cara Teratas untuk Menangani Kesalahan

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 mungkin menimbulkan kesalahan.

Ini hampir merupakan tugas yang 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 yang datang, Anda akan menghabiskan lebih banyak waktu untuk 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 sheet yang tidak ada, maka jelas kita 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, Saat Terjadi Kesalahan, "lanjutkan ke baris berikutnya", "ke atau lompat ke baris lain", dll.…

Pernyataan On Error memiliki tiga jenis pernyataan untuk itu.

  1. GoTo 0 berarti setiap kali terjadi kesalahan waktu proses, 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; sebaliknya, ini hanya mengabaikan kesalahan.
  3. GoTo (label) berarti setiap kali VBA mengalami kesalahan, buka label yang ditetapkan. Ini membuat kode melompat ke baris tertentu yang disediakan oleh pembuat kode.

3 Cara Teratas untuk Menangani Error di VBA

# 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 run time 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, itu tidak akan memberi saya pesan kesalahan; sebaliknya, ini akan mengeksekusi baris kode berikutnya, yaitu j = 20/2.

# 2 - Pada Kesalahan GoTo Label

Saya telah mendeklarasikan 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. Kami akan mendapatkan kesalahan waktu proses 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 Berikutnya 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 KHitungan: 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: Di sini, "KCalculation" adalah nama label yang saya berikan; Anda dapat memberi nama label Anda sendiri tanpa spasi.

Sekarang, jika saya menjalankan baris kode ini, itu tidak akan melompat ke baris berikutnya. Alih-alih, ini 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. Ini akan menampilkan satu kotak pesan lagi untuk menunjukkan nomor kesalahan.

Kami pergi 11; sebagai hasilnya, Divisi oleh Nol.

Kami juga bisa mendapatkan deskripsi kesalahan alih-alih nomornya. Kami hanya perlu mengubah kodenya. Di bawah ini adalah kodenya.

Kode:

Err. Deskripsi

Ini akan menunjukkan deskripsi seperti ini.

Hal-hal untuk diingat

  • Setelah memasukkan "On Error Resume Next" di akhir kode, jangan lupa untuk menambahkan pernyataan "On Error GoTo 0."
  • Nama label harus sama di kedua tempat.
  • Nama label tidak perlu didefinisikan dengan baik sebelumnya.
  • Pada akhirnya, selalu lihat apa kesalahan yang terjadi melalui kotak pesan terpisah.

Artikel yang menarik...