Pernyataan Ralat VBA - 3 Kaedah Teratas untuk Menangani Ralat

Penyataan Ralat Excel VBA

Pernyataan VBA On Error adalah sejenis mekanisme pengendalian ralat yang digunakan untuk membimbing kod melakukan apa jika ia menghadapi jenis kesalahan, biasanya apabila kod menemui ralat maka pelaksanaannya berhenti tetapi dengan pernyataan ini dalam kod pelaksanaan kod diteruskan kerana telah menetapkan arahan yang harus dilakukan ketika menghadapi ralat.

Mengantisipasi kesalahan dalam kod menjadikan anda pro dalam pengekodan VBA. Anda tidak dapat menjadikan kodnya 100% cekap. Walaupun anda yakin dengan kod anda satu atau lain cara, ia mungkin menimbulkan kesalahan.

Ini hampir mustahil untuk mengenal pasti dan menangani setiap jenis kesalahan, tetapi kita mempunyai cara yang berbeza untuk menangani kesalahan dalam VBA. Semasa menulis kod, anda mungkin tidak menjangkakan jenis kesalahan yang boleh muncul, tetapi jika ada kesilapan, anda akan menghabiskan lebih banyak masa untuk melakukan debug daripada menulis kod itu sendiri.

Apakah Ralat?

Kesalahan tidak lain hanyalah sebaris kod yang tidak dapat dilaksanakan kerana fungsi atau kod yang salah. Oleh itu, cubalah untuk menjangkakan kesalahan dan atasi.

Sebagai contoh, jika anda cuba menghapus helaian yang tidak ada, maka jelas bahawa kita tidak dapat melaksanakan garis kod tersebut.

Kesalahan adalah dari tiga jenis satu kesalahan disusun kerana pemboleh ubah yang tidak diisytiharkan. Yang kedua adalah ralat kemasukan data kerana entri yang salah oleh pengekod, dan yang ketiga adalah ralat waktu berjalan kerana VBA tidak dapat mengenali garis kod. Kerana cuba mengakses atau mengerjakan lembaran kerja atau buku kerja, yang tidak ada.

Tetapi kami mempunyai pernyataan di VBA untuk menangani semua jenis kesalahan ini, iaitu, "On Error" pernyataan.

Jenis Penyataan Ralat

Titik utama menangani kesalahan dalam VBA adalah pernyataan “On Error”. Contohnya, Pada Kesalahan, "sambung semula baris seterusnya", "pergi ke atau lompat ke baris lain," dan lain-lain …

Penyataan On Error mempunyai tiga jenis pernyataan.

  1. GoTo 0 bermaksud setiap kali ralat waktu berjalan berlaku, excel atau VBA harus memaparkan kotak mesej ralat yang mengatakan jenis ralat yang dialaminya . Sebaik sahaja VBA melaksanakan kod, ia mematikan semua pengendali ralat pada blok tertentu pada kod tersebut.
  2. Resume Next bermaksud setiap kali berlaku kesalahan, pernyataan ini memerintahkan excel untuk mengabaikan kesalahan itu dan beralih ke (resume seterusnya) baris kod seterusnya tanpa memaparkan sebarang pesan kesalahan. Ini tidak bermaksud ia akan memperbaiki kesalahan; sebaliknya, ia hanya mengabaikan kesalahan.
  3. GoTo (label) bermaksud setiap kali VBA mengalami ralat, pergi ke label yang ditetapkan. Ini menjadikan kod untuk melonjak ke baris tertentu yang disediakan oleh pengkod.

3 Kaedah Teratas untuk Mengatasi Kesalahan dalam VBA

# 1 - Pada Kesalahan Lanjutkan Seterusnya

Andaikan anda membahagikan nilai 20 dengan 0, dan anda telah menyatakan pemboleh ubah untuk memberikan hasil pembahagian itu.

Kod:

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

Sekiranya anda menjalankan kod ini, ia akan membuang kesalahan di bawah.

Oleh itu, anda tidak boleh membahagi sebarang nombor dengan nilai sifar. Nombor ralat jangka masa adalah 11, iaitu, Bahagian oleh Sifar.

Sekarang saya akan menambah satu baris lagi ke kod.

Kod:

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

Sekarang saya akan menambah pernyataan Kesalahan resume seterusnya di bahagian atas.

Kod:

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

Sekarang, jika saya melaksanakan kod ini, ia tidak akan memberi saya mesej ralat; sebaliknya, ia akan melaksanakan baris kod seterusnya, iaitu, j = 20/2.

# 2 - Pada Kesalahan Label GoTo

Saya telah menyatakan tiga pemboleh ubah.

Kod:

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

Untuk ketiga-tiga pemboleh ubah ini, saya akan memberikan pengiraan pembahagian.

Kod:

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

Hasil ketiga pengiraan ini akan ditunjukkan dalam kotak mesej.

Kod:

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 berusaha melaksanakan kod ini kerana pengiraan "I" tidak tepat. Kami akan mendapat ralat jangka masa 11.

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

Kod:

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

Jika saya melaksanakannya, ini akan melewatkan pengiraan "I" dan melaksanakan dua pengiraan yang tersisa, dan hasilnya adalah seperti berikut.

Sekarang bukannya "On Error Resume Next," saya akan menambah "On Error GoTo KCalculation."

Kod:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error GoTo KC perhitungan: i = 20/0 j = 20/2 KKira-kira: k = 10/5 & "Nilai j ialah" & j & _ vbNewLine & "Nilai k adalah" & k & vbNewLine End Sub
Catatan: Di sini, "KCalitung" adalah nama label yang saya berikan; anda boleh memberikan nama label anda sendiri tanpa ruang.

Sekarang, jika saya melaksanakan baris kod ini, ia tidak akan melompat ke baris seterusnya. Sebaliknya ia akan melonjak ke nama label yang saya masukkan, iaitu, "KCalcualtion." Di sini ia akan mengabaikan kesalahan yang diberikan oleh "I", dan juga, ia tidak akan melakukan perhitungan "j", tetapi langsung, ia melompat ke "KCalcualtion."

# 3 - Mencetak Nombor Ralat di VBA

Di akhir kod, kami juga dapat mencetak nombor ralat di kotak mesej yang berasingan. Baris kod berikut akan melakukan tugas ini.

Kod:

Err.Nombor

Sekarang saya akan menjalankan kod ini kotak mesej pertama akan menunjukkan hasil pengiraan.

Klik OK. Ia akan menunjukkan satu lagi kotak mesej untuk menunjukkan nombor ralat.

Kami pergi 11; sebagai hasilnya, iaitu Pembahagian oleh Zero.

Kita juga boleh mendapatkan keterangan ralat dan bukannya nombor. Kita hanya perlu menukar kodnya. Berikut adalah kodnya.

Kod:

Huraian Err

Ia akan menunjukkan keterangan seperti ini.

Perkara yang Perlu Diingat

  • Setelah memasukkan "On Error Resume Next" di akhir kod, jangan lupa untuk menambahkan pernyataan "On Error GoTo 0."
  • Nama label harus sama di kedua tempat.
  • Nama label tidak perlu ditentukan terlebih dahulu.
  • Pada akhirnya, selalu lihat apa ralat yang berlaku melalui kotak mesej yang berasingan.

Artikel menarik...