Bagaimana mengabaikan ralat menggunakan Pernyataan Kesalahan VBA Pada Kesalahan Selanjutnya?

Ralat Kesalahan Excel VBA Seterusnya

Resume Kesalahan VBA Seterusnya adalah penyataan pengendali ralat. Sekiranya ralat berlaku semasa menjalankan kod dan bukannya menunjukkan ralat untuk meneruskan baris kod seterusnya dengan mengabaikan mesej ralat, anda boleh menggunakan pernyataan ini.

Mereka yang menulis kod secara teratur dalam VBA excel tahu bahawa mereka mungkin mendapat kesalahan walaupun setelah menulis kod yang mahir, tetapi mereka ingin mengabaikan kesalahan itu dan terus berjalan dengan baris kod seterusnya. Salah satu contoh tipikal untuk mendapatkan mesej ralat adalah ketika fungsi lembaran kerja VLOOKUP tidak menemui nilai pencarian dari array jadual. Ia tidak akan mengembalikan kesalahan # N / A; sebaliknya, ia akan membuang kesalahan. Sebagai "Tidak dapat mendapatkan harta VLOOKUP kelas fungsi lembaran kerja."

Sekiranya anda tidak tahu mengapa kami mendapat ralat ini, maka sangat sukar untuk memperbaiki bug ini. Di VBA, kami mempunyai fitur yang disebut " On Error Resume Next ."

Apa yang Dilakukan Pada Ralat Kesalahan Selanjutnya di VBA?

Terdapat kawasan tertentu sebagai pengekod. Kami pasti akan mengetahui bahawa ini akan memberikan mesej ralat, tetapi kami harus mengabaikan kesalahan ini untuk terus membaca kod, jadi bagaimana mengabaikan kesalahan itu adalah keraguan umum yang ada pada setiap orang.

Dengan menggunakan pernyataan VBA On Error Resume Next, kita dapat mengabaikan ralat dan menyambung semula baris kod seterusnya.

Contoh # 1

Andaikan anda mempunyai banyak lembaran kerja, dan anda menyembunyikan sebahagian daripada mereka sebagai sebahagian daripada projek VBA. Contohnya, di bawah adalah lembaran kerja yang saya ada di lembaran kerja saya.

Saya telah menulis kod untuk menyembunyikan helaian "Penjualan &" Keuntungan ", dan di bawah ini adalah kodnya.

Kod:

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

Sekarang saya akan mula menjalankan baris kod demi baris menggunakan kekunci F8 .

Sekiranya saya menekan kekunci F8 sekali lagi, ia akan menyembunyikan helaian bernama " Penjualan ."

Sekarang tekan kekunci F8 sekali lagi dan lihat apa yang berlaku.

Kami mendapat ralat "Langganan di luar julat" kerana baris kod semasa mengatakan di bawah.

Lembaran kerja ("Keuntungan 2019"). Terlihat = xlVeryHidden

Ia berusaha menyembunyikan lembaran kerja bernama " Untung 2019 " , tetapi tidak ada lembar kerja dengan nama "Keuntungan 2019".

Dalam kes ini, jika lembaran kerja tidak ada dalam buku kerja, kita perlu mengabaikan ralat dan terus menjalankan kod dengan mengabaikan ralat "Langganan di luar jangkauan".

Baris seterusnya dalam kod mengatakan

Lembaran kerja ("Keuntungan"). Terlihat = xlVeryHidden

Lembaran kerja ini memang ada dalam buku kerja ini, jadi tanpa mengabaikan ralat, kita tidak dapat beralih ke baris kod ini.

Untuk mengabaikan ralat ini, kita perlu menambahkan pernyataan “On Error Resume Next”.

Kod:

Sub On_Error () On Error Resume Next Worksheets ("Sales"). Visible = xlVeryHidden Worksheets ("Profit 2019"). Visible = xlVeryHidden Worksheets ("Profit"). Visible = xlVeryHidden End Sub

Seperti yang anda lihat di atas, saya telah menambahkan pernyataan di bahagian atas kod sebelum garis bermula. Sekarang jalankan kod dan lihat apa yang berlaku.

Sekarang saya berada di barisan yang diberi kesalahan sebelumnya, tekan kekunci F8, dan lihat apa yang berlaku.

Saya telah melangkah ke baris kod seterusnya tanpa menunjukkan kesilapan kerana pernyataan yang telah kami tambahkan di bahagian atas, iaitu pernyataan VBA "On Error Resume Next".

Contoh # 2

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

Kami mempunyai dua jadual di atas jadual pertama yang mempunyai Nama Emp dan perincian gaji mereka di jadual kedua, dan kami hanya mempunyai Nama Emp, jadi dengan menggunakan VLOOKUP, kami perlu mengambil butiran gaji dari jadual sebelah kiri.

Berikut adalah kod yang telah saya tulis untuk mendapatkan perinciannya.

Kod:

Sub On_Error1 () Dim k Selagi k = 2 Hingga 8 Sel (k, 6). Nilai = Lembaran KerjaFungsi.VLookup (Sel (k, 5), Julat ("A: B"), 2, 0) Seterusnya k Akhir Sub

Sekarang jalankan baris demi baris kod dan lihat apa yang berlaku.

Setelah menjalankan kod sel pertama, kami mendapat hasil untuk pekerja pertama. Ulangi perkara yang sama untuk pekerja kedua juga.

Kali ini kami mendapat mesej ralat. Mari lihat nama pekerja kedua dalam jadual.

Nama pekerja kedua adalah "Gayathri", tetapi nama ini tidak ada dalam jadual pertama, jadi fungsi VBA VLOOKUP tidak mengembalikan ralat "# N / A" apabila VLOOKUP tidak menemui nilai pencarian dari meja; sebaliknya, ia memberikan mesej ralat di atas.

Tujuan kami adalah jika nama pekerja tidak dijumpai di dalam jadual, maka kami memerlukan sel kosong untuk pekerja tersebut dan mengabaikan kesalahan dan memberikan hasil untuk nama yang tinggal.

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

Kod:

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

Sekarang jalankan kod dan lihat hasilnya.

Dua nama pekerja, " Gayathri & Karanveer, " tidak ada dalam senarai, jadi kod baris tersebut mesti mengalami ralat kerana kami telah menambahkan pernyataan pengendali ralat " Pada Kesalahan Resume Selanjutnya " ia telah mengabaikan baris kod itu dan disambung semula untuk pekerja seterusnya.

Perkara yang Perlu Diingat di sini

  • "On Error Resume Next" adalah pernyataan pengendali ralat apabila kita perlu mengabaikan kesalahan yang diketahui.
  • Sekiranya anda ingin mengabaikan mesej ralat hanya untuk sekumpulan kod tertentu, maka tutup pernyataan ralat kesalahan seterusnya dengan menambahkan pernyataan " On Error GoTo 0 ".

Artikel menarik...