Chỉ số phụ VBA nằm ngoài phạm vi (Lỗi thời gian chạy '9') | Tại sao lỗi này xảy ra?

Chỉ số phụ Excel VBA nằm ngoài phạm vi

Chỉ số con nằm ngoài phạm vi là một lỗi chúng tôi gặp phải trong VBA khi chúng tôi cố gắng tham chiếu một cái gì đó hoặc một biến không tồn tại trong mã, ví dụ: giả sử chúng tôi không có biến có tên x nhưng chúng tôi sử dụng hàm msgbox trên x chúng tôi. sẽ gặp phải lỗi chỉ số phụ nằm ngoài phạm vi.

Lỗi VBA Subscript nằm ngoài phạm vi xảy ra vì đối tượng chúng tôi đang cố gắng truy cập không tồn tại. Đây là một loại lỗi trong mã hóa VBA và đây là "Lỗi thời gian chạy 9". Điều quan trọng là phải hiểu các khái niệm để viết mã hiệu quả và điều quan trọng hơn là phải hiểu lỗi mã VBA của bạn để gỡ lỗi mã hiệu quả.

Nếu lỗi mã hóa của bạn và bạn không biết lỗi đó là gì khi bạn biến mất.

Một bác sĩ không thể đưa thuốc cho bệnh nhân của mình mà không biết bệnh đó là gì. Đối với bác sĩ và bệnh nhân chắc chắn, cả hai đều biết có bệnh (lỗi) nhưng điều quan trọng là phải hiểu bệnh (lỗi) hơn là cho thuốc. Nếu bạn có thể hiểu lỗi một cách hoàn hảo thì việc tìm ra giải pháp sẽ dễ dàng hơn nhiều.

Trên một lưu ý tương tự trong bài viết này, chúng ta sẽ thấy một trong những lỗi quan trọng mà chúng ta thường gặp phải thường xuyên, tức là lỗi "Chỉ số dưới phạm vi" trong Excel VBA.

Lỗi chỉ số nằm ngoài phạm vi trong Excel VBA là gì?

Ví dụ: nếu bạn đang giới thiệu trang tính không có sổ làm việc thì chúng tôi gặp lỗi Thời gian chạy 9: “Chỉ số dưới phạm vi”.

Nếu bạn nhấp vào nút Kết thúc, nó sẽ kết thúc quy trình con, nếu bạn nhấp vào gỡ lỗi, nó sẽ đưa bạn đến dòng mã nơi nó gặp lỗi và trợ giúp sẽ đưa bạn đến trang web của Microsoft.

Tại sao Lỗi chỉ số nằm ngoài phạm vi xảy ra?

Như tôi đã nói với tư cách là một bác sĩ quan trọng là phải tìm ra người đã khuất trước khi nghĩ đến thuốc. Lỗi VBA Subscript nằm ngoài phạm vi xảy ra khi dòng mã không đọc đối tượng mà chúng tôi đã nhập.

Ví dụ, hãy xem hình ảnh bên dưới, tôi có ba trang tính được đặt tên là Trang tính1, Trang tính2, Trang tính3.

Bây giờ trong phần code, tôi đã viết code để chọn sheet “Bán hàng”.

Mã:

 Sub Macro2 () Sheets ("Bán hàng"). Chọn End Sub 

Nếu tôi chạy mã này bằng cách sử dụng phím F5 hoặc theo cách thủ công, tôi sẽ nhận được lỗi Thời gian chạy 9: “Chỉ số dưới phạm vi”.

Điều này là do tôi đã thử truy cập đối tượng trang tính “Bán hàng” không tồn tại trong sổ làm việc. Đây là lỗi thời gian chạy vì lỗi này xảy ra trong khi chạy mã.

Một lỗi chỉ số con phổ biến khác mà chúng tôi gặp phải là khi chúng tôi tham chiếu đến sổ làm việc không có ở đó. Để biết ví dụ, hãy xem đoạn mã dưới đây.

Mã:

 Sub Macro1 () Dim Wb As Workbook Set Wb = Workbooks ("Bảng lương.xlsx") End Sub 

Đoạn mã trên cho biết biến WB phải bằng sổ làm việc “Bảng lương .xlsx”. Hiện tại, sổ làm việc này chưa được mở trên máy tính của tôi. Nếu tôi chạy mã này theo cách thủ công hoặc thông qua phím F5, tôi sẽ gặp lỗi Thời gian chạy 9: “Chỉ số dưới phạm vi”.

Điều này là do sổ làm việc tôi đang đề cập đến, hiện chưa mở hoặc hoàn toàn không tồn tại.

Lỗi chỉ số VBA trong mảng

Khi bạn khai báo mảng là mảng động và nếu bạn không sử dụng từ DIM hoặc REDIM trong VBA để xác định độ dài của mảng, chúng ta thường gặp lỗi VBA Subscript ngoài phạm vi. Ví dụ, hãy xem đoạn mã dưới đây.

Mã:

 Sub Macro3 () Dim MyArray () As Long MyArray (1) = 25 End Sub 

Ở phần trên, tôi đã khai báo biến dưới dạng một mảng nhưng tôi chưa gán điểm bắt đầu và kết thúc thay vì ngay lập tức tôi đã gán giá trị 25 cho mảng đầu tiên.

Nếu tôi chạy mã này bằng cách sử dụng phím F5 hoặc sau đó theo cách thủ công, chúng tôi sẽ nhận được lỗi Thời gian chạy 9: “Chỉ số dưới phạm vi”.

Để khắc phục sự cố này, tôi cần chỉ định độ dài của một mảng bằng cách sử dụng từ Redim.

Mã:

 Sub Macro3 () Dim MyArray () As Long ReDim MyArray (1 đến 5) MyArray (1) = 25 End Sub 

Mã này không đưa ra bất kỳ lỗi nào.

Làm thế nào để hiển thị lỗi ở cuối mã VBA?

Nếu bạn không muốn thấy lỗi trong khi mã đang chạy và chạy nhưng cần có danh sách lỗi ở cuối thì bạn cần sử dụng trình xử lý lỗi “Tiếp tục lỗi”. Nhìn vào đoạn mã dưới đây.

Mã:

 Sub Macro1 () Dim Wb As Workbook Khi Lỗi Tiếp tục Đặt Tiếp theo Wb = Workbooks ("Salary Sheet.xlsx") MsgBox Err.Description End Sub 

Như chúng ta đã thấy, đoạn mã này sẽ đưa ra lỗi Thời gian chạy 9: “Chỉ số phụ nằm ngoài phạm vi trong Excel VBA . Nhưng tôi phải sử dụng trình xử lý lỗi On Error Resume Next trong VBA trong khi chạy mã, chúng tôi sẽ không nhận được bất kỳ thông báo lỗi nào thay vì ở hộp thông báo kết thúc hiển thị cho tôi mô tả lỗi như thế này.

Bạn có thể tải xuống Mẫu chỉ số ngoài phạm vi VBA trong Excel tại đây: - Mẫu chỉ số ngoài phạm vi VBA


$config[zx-auto] not found$config[zx-overlay] not found