Bagaimana cara mengabaikan kesalahan menggunakan VBA On Error Resume Next Statement?

Excel VBA Pada Kesalahan Lanjutkan Berikutnya

VBA On Error Resume Next adalah pernyataan penanganan kesalahan. Jika kesalahan terjadi saat menjalankan kode alih-alih menunjukkan kesalahan untuk melanjutkan baris kode berikutnya dengan mengabaikan pesan kesalahan Anda dapat menggunakan pernyataan ini.

Mereka yang menulis kode secara teratur di excel VBA tahu bahwa mereka mungkin mendapatkan kesalahan bahkan setelah menulis kode mahir, tetapi mereka ingin mengabaikan kesalahan itu dan terus menjalankan baris kode berikutnya. Salah satu contoh umum untuk mendapatkan pesan kesalahan adalah ketika fungsi lembar kerja VLOOKUP tidak menemukan nilai pencarian dari larik tabel. Ini tidak akan mengembalikan kesalahan # N / A; sebaliknya, itu akan membuang kesalahan. Sebagai "Tidak bisa mendapatkan properti VLOOKUP dari kelas fungsi lembar kerja".

Jika Anda tidak tahu mengapa kami mendapatkan kesalahan ini, maka sangat sulit untuk memperbaiki bug tersebut. Di VBA, kami memiliki fitur yang disebut " On Error Resume Next ".

Apa yang Dilakukan On Error Resume Next di VBA?

Ada area tertentu sebagai pembuat kode. Kita akan tahu pasti ini akan memberikan pesan kesalahan, tetapi kita perlu mengabaikan kesalahan ini untuk terus membaca kode, jadi bagaimana mengabaikan kesalahan itu adalah keraguan umum yang dimiliki semua orang.

Dengan menggunakan pernyataan VBA On Error Resume Next, kita dapat mengabaikan kesalahan dan melanjutkan baris kode berikutnya.

Contoh 1

Asumsikan Anda memiliki banyak lembar kerja, dan Anda menyembunyikan beberapa di antaranya sebagai bagian dari proyek VBA. Misalnya, di bawah ini adalah lembar kerja yang saya miliki di lembar kerja saya.

Saya telah menulis kode untuk menyembunyikan lembar “Penjualan &“ Laba ”, dan di bawah ini adalah kodenya.

Kode:

Sub On_Error () Worksheets ("Sales"). Visible = xlVeryHidden Worksheets ("Profit 2019"). Visible = xlVeryHidden Worksheets ("Profit"). Visible = xlVeryHidden End Sub

Sekarang saya akan mulai menjalankan kode baris demi baris menggunakan tombol F8 .

Jika saya menekan tombol F8 sekali lagi, itu akan menyembunyikan lembar bernama " Penjualan ."

Sekarang tekan tombol F8 sekali lagi dan lihat apa yang terjadi.

Kami mendapat kesalahan "Subscript out of range" karena baris kode saat ini mengatakan di bawah ini.

Lembar Kerja ("Laba 2019"). Terlihat = xlVeryHidden

Ini mencoba menyembunyikan lembar kerja bernama " Laba 2019, " tetapi tidak ada lembar kerja dengan nama "Laba 2019".

Dalam kasus ini, jika lembar kerja tidak ada di buku kerja, kita perlu mengabaikan kesalahan dan terus menjalankan kode dengan mengabaikan kesalahan "Subscript out of range".

Baris berikutnya dalam kode mengatakan

Lembar Kerja ("Keuntungan"). Terlihat = xlVeryHidden

Lembar kerja ini memang ada di buku kerja ini, jadi tanpa mengabaikan kesalahan, kita tidak bisa pindah ke baris kode ini.

Untuk mengabaikan kesalahan ini, kita perlu menambahkan pernyataan "On Error Resume Next".

Kode:

Sub On_Error () Pada Kesalahan Lanjutkan Lembar Kerja Berikutnya ("Penjualan"). Terlihat = xlVeryHidden Lembar Kerja ("Laba 2019"). Terlihat = xlVeryHidden Lembar Kerja ("Laba"). Terlihat = xlVeryHidden End Sub

Seperti yang Anda lihat di atas, saya telah menambahkan pernyataan di bagian atas kode sebelum salah satu baris dimulai. Sekarang jalankan kode dan lihat apa yang terjadi.

Sekarang saya di baris yang diberikan kesalahan sebelumnya, tekan tombol F8, dan lihat apa yang terjadi.

Saya telah melompat ke baris kode berikutnya tanpa menunjukkan kesalahan apa pun karena pernyataan yang telah kami tambahkan di atas, yaitu pernyataan VBA "On Error Resume Next".

Contoh # 2

Sekarang kita akan melihat bagaimana menggunakan pernyataan ini dengan satu contoh lagi. Lihat struktur data di bawah untuk contoh ini.

Kami memiliki dua tabel di atas tabel pertama yang memiliki Nama Emp dan detail gaji mereka di tabel kedua, dan kami hanya memiliki Nama Emp, jadi dengan menggunakan VLOOKUP, kami perlu mengambil detail gaji dari tabel sebelah kiri.

Di bawah ini adalah kode yang saya tulis untuk mendapatkan detailnya.

Kode:

Sub On_Error1 () Dim k As Long For k = 2 To 8 Cells (k, 6) .Value = WorksheetFunction.VLookup (Cells (k, 5), Range ("A: B"), 2, 0) Next k End Sub

Sekarang jalankan kode baris demi baris dan lihat apa yang terjadi.

Setelah menjalankan kode sel pertama, kami mendapatkan hasil untuk karyawan pertama. Ulangi hal yang sama untuk karyawan kedua juga.

Kali ini kami mendapat pesan kesalahan. Mari kita lihat nama karyawan kedua di tabel.

Nama karyawan kedua adalah "Gayathri," tetapi nama ini tidak ada di tabel pertama, sehingga fungsi VBA VLOOKUP tidak mengembalikan kesalahan "# N / A" saat VLOOKUP tidak menemukan nilai pencarian dari meja; sebaliknya, ini memberikan pesan kesalahan di atas.

Tujuan kami adalah jika nama karyawan tidak ditemukan di tabel, maka kami membutuhkan sel kosong untuk karyawan itu dan mengabaikan kesalahan dan memberikan hasil untuk nama yang tersisa.

Kita perlu menambahkan pernyataan "On Error Resume Next" di dalam loop.

Kode:

Sub On_Error1 () Dim k As Long Untuk k = 2 Sampai 8 On Error Resume Next Cells (k, 6) .Value = WorksheetFunction.VLookup (Cells (k, 5), Range ("A: B"), 2, 0 ) Berikutnya k Akhiri Sub

Sekarang jalankan kodenya dan lihat hasilnya.

Dua nama karyawan, " Gayathri & Karanveer, " tidak ada di daftar, jadi kode baris tersebut pasti mengalami kesalahan karena kami telah menambahkan pernyataan penanganan kesalahan " On Error Resume Next ", baris kode tersebut telah diabaikan dan dilanjutkan untuk karyawan berikutnya.

Hal-hal yang Perlu Diingat di sini

  • "On Error Resume Next" adalah pernyataan penanganan kesalahan ketika kita perlu mengabaikan kesalahan yang diketahui.
  • Jika Anda ingin mengabaikan pesan kesalahan hanya untuk satu set kode tertentu, maka tutup pernyataan on error resume next dengan menambahkan pernyataan " On Error GoTo 0 ".

Artikel yang menarik...