Langganan VBA Di Luar Jangkauan

Langganan Excel VBA Di Luar Jangkauan

Langganan di luar julat adalah ralat yang kita hadapi di VBA ketika kita cuba merujuk sesuatu atau pemboleh ubah yang tidak ada dalam kod, misalnya, mari kita anggap kita tidak mempunyai pemboleh ubah bernama x tetapi kita menggunakan fungsi msgbox pada x kita akan menemui langganan di luar ralat.

Ralat VBA di luar rentang berlaku kerana objek yang ingin kita akses tidak ada. Ini adalah jenis ralat dalam pengekodan VBA dan ini adalah "Run Time Error 9". Penting untuk memahami konsep untuk menulis kod yang cekap dan lebih penting lagi untuk memahami kesalahan kod VBA anda untuk menyahpepijat kod dengan cekap.

Sekiranya ralat pengekodan anda dan anda tidak tahu apakah kesalahan itu semasa anda hilang.

Seorang doktor tidak boleh memberi ubat kepada pesakitnya tanpa mengetahui apa penyakitnya. Yang pasti doktor dan pesakit, kedua-duanya tahu ada penyakit (kesalahan) tetapi penting untuk memahami penyakit (kesalahan) daripada memberi ubat kepadanya. Sekiranya anda dapat memahami ralat dengan sempurna, maka lebih mudah untuk mencari jalan penyelesaiannya.

Pada catatan serupa dalam artikel ini, kita akan melihat salah satu kesalahan penting yang biasanya kita hadapi secara berkala iaitu ralat "Subscript Out of Range" di Excel VBA.

Apakah Ralat di luar Ralat dalam Excel VBA?

Sebagai contoh, jika anda merujuk helaian yang tidak ada buku kerja maka kita akan mendapat Run masa ralat 9: "Subskrip terkeluar dari Julat".

Sekiranya anda mengklik butang End, ia akan mengakhiri subprosedur, jika anda mengklik debug, ia akan membawa anda ke barisan kod di mana ia mengalami kesalahan, dan bantuan akan membawa anda ke halaman laman web Microsoft.

Mengapa Ralat Langganan Di Luar Jangkauan Berlaku?

Seperti yang saya katakan sebagai doktor penting untuk mencari si mati sebelum memikirkan ubatnya. Kesalahan langganan VBA di luar julat berlaku apabila baris kod tidak membaca objek yang kami masukkan.

Sebagai contoh lihat gambar di bawah, saya mempunyai tiga helaian bernama Sheet1, Sheet2, Sheet3.

Sekarang dalam kod, saya telah menulis kod untuk memilih lembaran "Penjualan".

Kod:

 Sub Macro2 () Helaian ("Penjualan"). Pilih Sub Akhir 

Sekiranya saya menjalankan kod ini menggunakan kunci F5 atau secara manual, saya akhirnya akan mendapat ralat Jalankan waktu 9: "Langganan di luar Jangkauan"

Ini kerana saya cuba mengakses objek lembaran kerja "Penjualan" yang tidak ada dalam buku kerja. Ini adalah ralat masa jalan kerana ralat ini berlaku semasa menjalankan kod.

Kesalahan langganan lain yang kami dapat ialah ketika merujuk buku kerja yang tidak ada. Sebagai contoh lihat kod di bawah.

Kod:

 Sub Macro1 () Dim Wb Sebagai Set Buku Kerja Wb = Buku Kerja ("Lembaran Gaji.xlsx") Sub Akhir 

Kod di atas mengatakan pemboleh ubah WB harus sama dengan buku kerja "Salary Sheet.xlsx". Setakat ini, buku kerja ini tidak dibuka di komputer saya. Sekiranya saya menjalankan kod ini secara manual atau melalui kekunci F5, saya akan mendapat ralat Jalankan waktu 9: "Langganan di luar Julat".

Ini disebabkan oleh buku kerja yang saya rujuk, yang tidak dibuka sekarang atau tidak ada sama sekali.

Ralat Langganan VBA dalam Susunan

Apabila anda menyatakan array sebagai array dinamik dan jika anda tidak menggunakan kata DIM atau REDIM dalam VBA untuk menentukan panjang array, kita biasanya mendapat Langganan VBA dari rentang kesalahan. Contohnya, lihat kod di bawah.

Kod:

 Sub Macro3 () Dim MyArray () Selagi MyArray Panjang (1) = 25 Sub Akhir 

Dalam perkara di atas, saya telah menyatakan pemboleh ubah sebagai larik tetapi saya belum memberikan titik permulaan dan akhir sebaliknya saya langsung menetapkan nilai pertama bagi susunan pertama.

Sekiranya saya menjalankan kod ini menggunakan kunci F5 atau secara manual, kita akan mendapat ralat Jalankan waktu 9: "Langganan di luar Jangkauan"

Untuk menyelesaikan masalah ini, saya perlu menetapkan panjang array dengan menggunakan kata Redim.

Kod:

 Sub Macro3 () Dim MyArray () Selagi ReDim MyArray (1 Hingga 5) MyArray (1) = 25 Sub Akhir 

Kod ini tidak memberikan sebarang kesalahan.

Bagaimana Menunjukkan Kesalahan di Akhir Kod VBA?

Sekiranya anda tidak mahu melihat ralat semasa kodnya sedang berjalan tetapi memerlukan senarai ralat pada akhirnya, anda perlu menggunakan pengendali ralat "Pada Kesalahan Lanjutkan". Lihat kod di bawah.

Kod:

 Sub Macro1 () Dim Wb As Workbook On Error Resume Set seterusnya Wb = Workbooks ("Salary Sheet.xlsx") MsgBox Err.Deskripsi Akhir Sub 

Seperti yang telah kita lihat, kod ini akan membuang ralat Run time 9: “Subscript out of Range di Excel VBA . Tetapi saya harus menggunakan pengendali ralat Pada Kesalahan Resume Selanjutnya di VBA semasa menjalankan kod, kita tidak akan mendapat mesej ralat sebaliknya pada kotak pesanan akhir menunjukkan kepada saya keterangan ralat seperti ini.

Anda boleh memuat turun Templat Excel VBA Out of Range di sini: - Templat Subscript Out of Range VBA