Subskrip VBA Di Luar Jangkauan (Kesalahan Run-Time '9') - Mengapa Kesalahan Ini Terjadi?

Subskrip VBA Excel Di Luar Rentang

Subscript out of range adalah kesalahan yang kita temui di VBA ketika kita mencoba mereferensikan sesuatu atau variabel yang tidak ada dalam kode, misalnya, misalkan kita tidak memiliki variabel bernama x tetapi kita menggunakan fungsi msgbox pada x kita akan mengalami kesalahan subskrip di luar jangkauan.

Error VBA Subscript out of range terjadi karena objek yang kami coba akses tidak ada. Ini adalah jenis kesalahan dalam pengkodean VBA, dan ini adalah "Run Time Error 9". Penting untuk memahami konsep untuk menulis kode yang efisien, dan lebih penting lagi untuk memahami kesalahan kode VBA Anda untuk men-debug kode secara efisien.

Jika kesalahan pengkodean Anda dan Anda tidak tahu apa kesalahan itu ketika Anda pergi.

Seorang dokter tidak dapat memberikan obat kepada pasiennya tanpa mengetahui apa penyakitnya. Yang pasti, dokter dan pasien sama-sama tahu ada penyakit (kesalahan), tapi penting untuk memahami penyakit (kesalahan) daripada memberi obat. Jika Anda dapat memahami kesalahan dengan sempurna, maka akan lebih mudah untuk menemukan solusinya.

Pada catatan serupa di artikel ini, kita akan melihat salah satu kesalahan penting yang biasanya sering kita temui, yaitu, kesalahan "Subscript Out of Range" di Excel VBA.

Apa itu Subscript out of Range Error di Excel VBA?

Misalnya, jika Anda merujuk ke sheet yang tidak ada di workbook, maka kita mendapatkan Run time error 9: "Subscript out of Range."

Jika Anda mengklik tombol End, subprocedure akan diakhiri, jika Anda mengklik debug, Anda akan dibawa ke baris kode yang mengalami error, dan bantuan akan membawa Anda ke halaman situs Microsoft.

Mengapa Terjadi Kesalahan Subscript Out of Range?

Seperti yang saya ceritakan sebagai dokter penting untuk menemukan almarhum sebelum memikirkan obatnya. VBA Subscript out of range error terjadi ketika baris kode tidak membaca objek yang kita masukkan.

Misalnya, lihat gambar di bawah ini. Saya memiliki tiga lembar bernama Sheet1, Sheet2, Sheet3.

Sekarang di dalam kode, saya telah menulis kode untuk memilih sheet "Penjualan".

Kode:

Sub Macro2 () Sheets ("Sales") Pilih End Sub

Jika saya menjalankan kode ini menggunakan tombol F5 atau secara manual, saya akan mendapatkan error Run time 9: "Subscript out of Range."

Ini karena saya mencoba mengakses objek lembar kerja "Penjualan", yang tidak ada di buku kerja. Ini adalah kesalahan waktu proses karena kesalahan ini terjadi saat menjalankan kode.

Kesalahan subskrip umum lainnya yang kita dapatkan adalah saat kita merujuk ke buku kerja yang tidak ada. Misalnya, lihat kode di bawah ini.

Kode:

Sub Macro1 () Dim Wb As Workbook Set Wb = Workbooks ("Salary Sheet.xlsx") End Sub

Kode di atas mengatakan variabel WB harus sama dengan buku kerja "Lembar Gaji.xlsx". Sampai sekarang, buku kerja ini tidak dibuka di komputer saya. Jika saya menjalankan kode ini secara manual atau melalui tombol F5, saya akan mendapatkan error Run time 9: "Subscript out of Range."

Ini karena buku kerja yang saya maksud, yang saat ini belum dibuka atau tidak ada sama sekali.

Kesalahan Subskrip VBA dalam Array

Saat Anda mendeklarasikan array sebagai array dinamis, dan jika Anda tidak menggunakan kata DIM atau REDIM di VBA untuk menentukan panjang array, kami biasanya mendapatkan kesalahan Subscript VBA di luar jangkauan. Misalnya, lihat kode di bawah ini.

Kode:

Sub Makro3 () Redupkan MyArray () As Long MyArray (1) = 25 End Sub

Di atas, saya telah mendeklarasikan variabel sebagai array, tetapi saya belum menetapkan titik awal dan akhir; sebaliknya, saya langsung menetapkan nilai 25 untuk array pertama.

Jika saya menjalankan kode ini menggunakan tombol F5 atau secara manual, kita akan mendapatkan error Run time 9: "Subscript out of Range."

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

Kode:

Sub Makro3 () Redupkan MyArray () As Long ReDim MyArray (1 Sampai 5) MyArray (1) = 25 End Sub

Kode ini tidak memberikan kesalahan apapun.

Bagaimana Cara Menampilkan Kesalahan di Akhir Kode VBA?

Jika Anda tidak ingin melihat kesalahan saat kode aktif dan berjalan tetapi membutuhkan daftar kesalahan di akhir, maka Anda perlu menggunakan pengendali kesalahan "Saat Resume Kesalahan". Lihat kode di bawah ini.

Kode:

Sub Macro1 () Dim Wb As Workbook On Error Resume Set Berikutnya Wb = Buku Kerja ("Gaji Sheet.xlsx") MsgBox Err.Description End Sub

Seperti yang telah kita lihat, kode ini akan menampilkan Run time error 9: “Subscript out of Range di Excel VBA . Tapi saya harus menggunakan penangan kesalahan On Error Resume Next di VBA saat menjalankan kode. Kami tidak akan mendapatkan pesan kesalahan apa pun. Sebaliknya di kotak pesan akhir menunjukkan deskripsi kesalahan seperti ini.

Anda dapat mengunduh Template Excel VBA Subscript Out of Range di sini: - Template Subscript VBA Out of Range

Artikel yang menarik...