Mình có 1 file tổng hợp dữ liệu từ các file có tên nằm trong vùng B4:B33 sheet HUONGDAN.
Trường hợp các file có dữ liệu đầy đủ thì code chạy rất ok, nhưng trong trường hợp ở vùng B16:S45 sheet M06 của các file1.xls hoặc file2.xls, file3.xls không có dữ liệu thì code báo lỗi tại dòng Arr3(K, J) = sArr(I, J)
Nhờ anh chị giúp em làm sao để code vẫn có thể chạy dù có 1 vài file không có dữ liệu, vì mình phải làm báo cáo này thường xuyên nên cũng có trường hợp không có dữ liệu à. Cám ơn các anh chị rất nhiều
Trường hợp các file có dữ liệu đầy đủ thì code chạy rất ok, nhưng trong trường hợp ở vùng B16:S45 sheet M06 của các file1.xls hoặc file2.xls, file3.xls không có dữ liệu thì code báo lỗi tại dòng Arr3(K, J) = sArr(I, J)
Nhờ anh chị giúp em làm sao để code vẫn có thể chạy dù có 1 vài file không có dữ liệu, vì mình phải làm báo cáo này thường xuyên nên cũng có trường hợp không có dữ liệu à. Cám ơn các anh chị rất nhiều

Public Sub GPE1()
Application.ScreenUpdating = False
Dim sArr(), Arr1(1 To 16, 1 To 12), Arr2(1 To 26, 1 To 1), Arr3(1 To 1000, 1 To 18), tArr()
Dim MyName As String, Pat As String, I As Long, J As Long, K As Long, N As Long
With ActiveWorkbook
MyName = .Name
Pat = .Path & ""
tArr = .Sheets("HUONGDAN").Range("B4", .Sheets("HUONGDAN").Range("B65536").End(xlUp)).Value
End With
For N = 2 To UBound(tArr)
'K = K + 1
Workbooks.Open Filename:=Pat & tArr(N, 1)
sArr = ActiveWorkbook.Sheets("M01").Range("C11:N26").Value
For I = 1 To 16
For J = 1 To 12
Arr1(I, J) = Arr1(I, J) + sArr(I, J)
Next J
Next I
sArr = ActiveWorkbook.Sheets("M01.1").Range("C4:C29").Value
For I = 1 To 26
Arr2(I, 1) = Arr2(I, 1) + sArr(I, 1)
Next I
sArr = ActiveWorkbook.Sheets("M06").Range("B15:S45").Value
For I = 1 To 31
K = K + 1
For J = 1 To 18
Arr3(K, J) = sArr(I, J)
Next J
Next I
ActiveWindow.Close False
Next N
Workbooks(MyName).Activate
Sheets("M01").Range("C11:N26") = Arr1
Sheets("M01.1").Range("C4:C29") = Arr2
Sheets("M06").Range("B15:S15").Resize(K) = Arr3
Application.ScreenUpdating = False
End Sub
Public Sub GPE()
Application.ScreenUpdating = False
Dim sArr(), Arr1(1 To 16, 1 To 12), Arr2(1 To 26, 1 To 1), Arr3(1 To 1000, 1 To 18), tArr()
Dim MyName As String, Pat As String, I As Long, J As Long, K As Long, N As Long
With ActiveWorkbook
MyName = .Name
Pat = .Path & ""
tArr = .Sheets("HUONGDAN").Range("B4", .Sheets("HUONGDAN").Range("B65536").End(xlUp)).Value
End With
For N = 2 To UBound(tArr)
Workbooks.Open Filename:=Pat & tArr(N, 1)
With ActiveWorkbook
sArr = .Sheets("M01").Range("C11:N26").Value
For I = 1 To 16
For J = 1 To 12
Arr1(I, J) = Arr1(I, J) + sArr(I, J)
Next J
Next I
sArr = .Sheets("M01.1").Range("C4:C29").Value
For I = 1 To 26
Arr2(I, 1) = Arr2(I, 1) + sArr(I, 1)
Next I
sArr = .Sheets("M06").Range("B15", .Sheets("M06").Range("B15").End(xlDown)).Resize(, 18).Value
For I = 1 To UBound(sArr)
K = K + 1
For J = 1 To 18
Arr3(K, J) = sArr(I, J)
Next J
Next I
End With
ActiveWindow.Close False
Next N
Workbooks(MyName).Activate
Sheets("M01").Range("C11:N26") = Arr1
Sheets("M01.1").Range("C4:C29") = Arr2
With Sheets("M06")
.Range("b15").Resize(1000, 18).ClearContents
.Range("b15").Resize(1000, 18).Font.Bold = False
.Range("b15:S15").Resize(K) = Arr3
For I = 1 To K
If Arr3(I, 1) = Empty Then .Range("b" & I + 14).Resize(, 18).Font.Bold = True
Next I
End With
End Sub
File đính kèm
Lần chỉnh sửa cuối: