Sub Keluar VBA

Sub Prosedur Keluar Excel VBA

Exit Sub statement keluar dari subprocedure lebih awal dari baris yang ditentukan kod VBA. Namun, untuk keluar dari subprosedur, kita perlu menerapkan semacam ujian logik.

Mari bina ini dengan mudah.

 Sub MacroName () '...' Beberapa kod di sini '... Keluar Sub' Keluar Sub tanpa melaksanakan baris kod selanjutnya di bawah '...' Kod ini akan diabaikan '... Tamat 

Contoh

Anda boleh memuat turun Templat Ex Excel Sub Excel VBA ini di sini - Templat VBA Exit Sub Excel

Contoh # 1

Untuk contoh yang lebih baik lihat kod di bawah.

Kod:

 Sub Exit_Contoh1 () Dim k Selagi k = 1 Hingga 10 Sel (k, 1). Nilai = k Seterusnya k Akhir Sub 

Kod di atas akan memasukkan nombor siri dari 1 hingga 10 dalam sel A1 hingga A10.

Sekarang saya ingin memasukkan hanya 5 nombor siri dan sebaik sahaja nilai pemboleh ubah "k" menjadi 6 saya ingin keluar dari sub.

Untuk ini, saya perlu menambahkan ujian logik di excel sebagai IF k = 6 Kemudian Keluar Sub .

Kod:

 Sub Exit_Contoh1 () Dim k Selagi k = 1 Hingga 10 Jika k = 6 Kemudian Keluar Sub 'Sebaik sahaja nilai k menjadi 6 ia akan mengabaikan semua kod dan keluar dari Sel (k, 1). Nilai = k Seterusnya k Akhir Sub 

Sekarang jalankan kod baris demi baris. Tekan kekunci F8 untuk memulakan prosiding.

Setakat ini, nilai k adalah sifar.

Untuk menukar nilai k menjadi 1 tekan kekunci F8 sekali lagi.

Jadi nilai k adalah 1 kod kami terus berjalan dan akan memasukkan 1 ke sel A1. Seperti ini terus jalankan gelung sehingga nilai k menjadi 6.

Sekarang nilai k adalah 6 dan garis kod akan melaksanakan ujian logik kami untuk keluar dari subprosedur. Sekiranya saya menekan kekunci F8 sekali lagi, ia akan keluar dari keseluruhan sub prosedur sahaja.

Seperti yang kita lihat, ia telah menonjolkan kata "Exit Sub" . Setelah menekan kekunci F8, ia akan keluar dari subproses tanpa pergi ke kata "End Sub" .

Contoh # 2 - Pada Ralat Keluar dari Subproses

Kita juga boleh keluar dari subprosedur ketika kita mendapat nilai ralat. Sebagai contoh, pertimbangkan data di bawah untuk membahagi nombor1 dari nombor 2.

Berikut adalah kod untuk mendapatkan pembahagian dua nombor.

Kod:

 Sub Exit_Contoh2 () Dim k Selagi k = 2 Hingga 9 Sel (k, 3). Nilai = Sel (k, 1). Nilai / Sel (k, 2). Nilai Selanjutnya k Akhir Sub 

Seperti yang kita ketahui, kita tidak boleh membahagi sebarang nombor dengan sifar. Oleh itu, jika kita berusaha untuk melakukan itu, kita akan mendapat ralat sebagai Ralat Waktu Jalankan '11': Division By Zero.

Untuk mengelakkan ini sebaik sahaja kami menghadapi sebarang kesilapan, saya akan menyebut makro saya untuk keluar dari subproses dengan serta-merta. Kod di bawah adalah satu kes seperti itu.

Kod:

 Sub Exit_Contoh2 () Dim k Selagi k = 2 Hingga 9 Pada Kesalahan GoTo ErrorHandler Cells (k, 3). Value = Cells (k, 1). Value / Cells (k, 2). Value Next k ErrorHandler: Exit Sub Sub Akhir 

Dalam contoh di atas, saya telah menyebutkan pernyataan "On Error Goto ErrorHandler". Di sini perkataan ErrorHandler adalah label yang telah saya tetapkan. Sekiranya anda dapat melihat di bahagian bawah kod saya telah menyebut label sebagai

ErrorHandler: Keluar Sub 

Jadi sebaik sahaja kod menemui kesalahan, ia akan mendorong kod untuk melompat ke label dan label mempunyai pernyataan "Exit Sub", sehingga akan keluar dari subprosedur.

Sekarang saya akan menjalankan kod, ia akan mengira pembahagian sehingga ia menemui ralat.

Seperti yang anda lihat di sel C7, ia mengalami kesalahan sebagai "Division by Zero" sehingga keluar dari subprosedur. Tanpa memberitahu pengguna keluar dari subprosedur selalu menjadi perkara yang berbahaya. Untuk memberi maklumat kepada pengguna mengenai kesalahan tersebut, kami boleh memasukkan satu kotak pesanan kecil.

Kod:

 Sub Exit_Example2 () Dim k Asalkan k = 2 Hingga 9 Pada Ralat GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Ralat telah berlaku dan ralatnya adalah: "& vbNewLine & Err.Deskripsi Keluar Sub Akhir Sub 

Kod di atas akan menunjukkan mesej ralat kemudian keluar dari subproses. Semasa menjalankan kod jika berlaku ralat, ia akan menunjukkan kotak mesej di VBA seperti di bawah.

Ini lebih merupakan kaedah yang boleh dipercayai untuk keluar dari Sub Prosedur.