Ralat VBA

Pernyataan Ralat Excel VBA Pada

Pernyataan VBA On Error adalah sejenis mekanisme pengendalian ralat yang digunakan untuk membimbing kod melakukan apa jika ia menghadapi sebarang 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 menjangka jenis kod kesalahan 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 adalah sebaris kod yang tidak dapat dilaksanakan kerana fungsi atau kod yang salah. Oleh itu, cubalah untuk menjangkakan kesilapan dan atasi.

Sebagai contoh, jika anda cuba memadamkan helaian yang tidak ada, jelas kami 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 pengkod, 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 seperti pernyataan "On Error".

Jenis Penyataan Ralat

Titik utama menangani kesalahan dalam VBA adalah pernyataan “On Error”. Contohnya Pada Kesalahan "sambung semula baris seterusnya", "pergi ke atau melompat 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 kesalahan 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 mengabaikan kesalahan.
  3. GoTo [label] bermaksud setiap kali VBA mengalami kesalahan pergi ke label yang ditetapkan. Ini menjadikan kod untuk melompat ke garis tertentu yang disediakan oleh pengekod.

3 Kaedah Teratas untuk Menangani Kesalahan dalam VBA

Anda boleh memuat turun Templat Ralat VBA ini di sini - Templat Ralat 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 masa larian adalah 11 iaitu Bahagian oleh Zero

Sekarang saya akan menambah satu baris lagi pada kod tersebut.

Kod:

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

Sekarang saya akan menambah pernyataan mengenai ralat Kesalahan seterusnya di bahagian atas.

Kod:

 Sub OnError_Example1 () Dim i As Integer, j As 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 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_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

Hasil ketiga-tiga pengiraan ini akan ditunjukkan di 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 untuk melaksanakan kod ini kerana pengiraan "I" tidak tepat kita akan mendapat ralat run time 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 

Sekiranya saya melaksanakannya, ini akan melangkau pengiraan "I" dan melaksanakan dua pengiraan yang tinggal 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 KKalkulasi: k = 10/5 MsgBox "Nilai i adalah" & i & vbNewLine & "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 menjalankan baris kod ini, ia tidak akan melonjak ke baris berikutnya sebaliknya akan melonjak ke label nama yang saya masukkan iaitu "KCalcualtion". Di sini ia akan mengabaikan kesalahan yang diberikan oleh "I" dan juga tidak akan melakukan perhitungan "j" tetapi langsung 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 menduduki tangga ke-11 sebagai hasilnya iaitu Division by Zero.

Kita juga boleh mendapatkan keterangan ralat dan bukannya nombor. Kita hanya perlu menukar kod, di bawah ini adalah kod.

Kod:

Huraian Err

Ia akan menunjukkan keterangan seperti ini.

Perkara yang Perlu Diingat

  • Setelah memasukkan "On Error Resume Next" di akhir kod jangan lupa tambahkan 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.