Các bác giúp em gỡ lỗi đoạn code này với ạ? Cảm ơn các bác

Liên hệ QC

namhandsome1

Thành viên mới
Tham gia
11/9/16
Bài viết
38
Được thích
3
Sub lap()
Dim a, b, c As Long
Dim endrow As Long
Dim kq1()
endrow = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
arr2 = Sheet2.Range("A1:O" & endrow).Value
For c = 1 To 14
ReDim kq1(1 To UBound(arr2, 1) - c, 1 To UBound(arr2, 2) - c)
For a = 1 To (UBound(arr2, 1) - 1)
For b = 2 To UBound(arr2, 2)
If arr2(a, b) <> "" Then
kq1(a, b) = arr2(a, b) 'Báo lỗi Subcript out of range tại dòng này
End If
Next b
Next a
Sheet2.Range("A" & (c * 17)).Resize(UBound(arr2, 1) - c, UBound(arr2, 2) - c) = kq1
Next c
End Sub
 

File đính kèm

  • Book1.xlsm
    18.2 KB · Đọc: 2
Sub lap()
Dim a, b, c As Long
Dim endrow As Long
Dim kq1()
endrow = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
arr2 = Sheet2.Range("A1:O" & endrow).Value
For c = 1 To 14
ReDim kq1(1 To UBound(arr2, 1) - c, 1 To UBound(arr2, 2) - c)
For a = 1 To (UBound(arr2, 1) - 1)
For b = 2 To UBound(arr2, 2)
If arr2(a, b) <> "" Then
kq1(a, b) = arr2(a, b) 'Báo lỗi Subcript out of range tại dòng này
End If
Next b
Next a
Sheet2.Range("A" & (c * 17)).Resize(UBound(arr2, 1) - c, UBound(arr2, 2) - c) = kq1
Next c
End Sub

ngay lần "C" next đầu tiên thì mảng Kq1 thụt đi một dòng và 1 cột so với mảng ar2, trong khi a và b vẫn vậy.
 
ngay lần "C" next đầu tiên thì mảng Kq1 thụt đi một dòng và 1 cột so với mảng ar2, trong khi a và b vẫn vậy.
thanks bác em cũng vừa ngộ ra cái đó, bác cho e hỏi thêm lúc em khai báo mảng dim kq1(), giờ có lệnh nào để em xóa bỏ cái mảng đã khai báo đó đi sau 1 vòng lặp ko ạ?
 
Cảm ơn bác em cũng vừa ngộ ra cái đó, bác cho e hỏi thêm lúc em khai báo mảng dim kq1(), giờ có lệnh nào để em xóa bỏ cái mảng đã khai báo đó đi sau 1 vòng lặp ko ạ?
Cơ bản là chẳng tốn bao nhiêu bộ nhớ nên cũng không cần thiết phải xóa
Có lệnh Erase hình như là chỉ để xóa giá trị trong mảng thôi. Khi nào thoát Sub thì biến mảng sẽ tự động giải phóng khỏi bộ nhớ
 
Web KT
Back
Top Bottom