Chào các bạn,
Mình đang gặp một vấn đề khá khó chịu với lỗi 'Subscript out of range' (Lỗi chỉ số ngoài phạm vi) khi làm việc với mảng trong VBA. Cụ thể là mình đang cố gắng gán giá trị cho một phần tử trong mảng động nhưng lại nhận được thông báo lỗi này.
Mình có đoạn code như sau:
Dim myArray() As Variant
ReDim myArray(1 To 5)
' ... một số xử lý khác ...
myArray(6) = "Giá trị mới"
Mình hiểu rằng lỗi này xảy ra khi mình truy cập vào một chỉ số không tồn tại trong mảng. Tuy nhiên, trong ví dụ trên, mình đã khai báo mảng có kích thước từ 1 đến 5, và mình đang cố gắng gán giá trị cho chỉ số thứ 6. Điều này rõ ràng là sai.
Vấn đề của mình là trong thực tế, kích thước mảng của mình được xác định động dựa trên dữ liệu lấy từ một phạm vi khác, và đôi khi số lượng phần tử thực tế lại nhiều hơn số lượng mình dự kiến ban đầu, dẫn đến việc cố gắng truy cập vào chỉ số vượt quá giới hạn.
Các bạn có kinh nghiệm xử lý tình huống này như thế nào? Có cách nào để kiểm tra kích thước mảng hiện tại trước khi gán giá trị hoặc mở rộng mảng một cách an toàn hơn không?
Mình đang tìm kiếm các giải pháp hoặc các best practice để tránh lỗi này trong tương lai. Rất mong nhận được sự giúp đỡ từ cộng đồng!
Cảm ơn mọi người!