Code báo llỗi run-time error 1004 application-defined or object-defined error

Liên hệ QC

hoahuongduong1986

Thành viên thường trực
Tham gia
14/11/18
Bài viết
346
Được thích
40
Code này của em khá đơn giản. Nhưng nó báo lỗi 1004 ở đoạn này .Range("V7").Resize(a1, 3).Value = Arr7 mà em không hiểu vì sao ạ ? Mọi người xem giúp em với ạ.
Mã:
Sub KET_QUA()
Dim arr(), Arr7(), i As Long, lr As Long, a1 As Long
With Sheets("KQ")
         lr = .Range("b" & Rows.Count).End(xlUp).Row
         arr = .Range("b7:q" & lr).Value
         ReDim Arr7(1 To UBound(arr), 1 To 3)
         For i = 1 To UBound(arr)
                a1 = a1 + 1
                Arr7(a1, 1) = arr(i, 13) - arr(i, 10)
                Arr7(a1, 2) = arr(i, 16) - arr(i, 10)
                If Arr7(a1, 2) > 0 Then
                Arr7(a1, 3) = "Tot"
                Else
                Arr7(a1, 3) = "Can co gang"
               End If
              
        Next i

If a1 > 0 Then
.Range("V7:X90000").ClearContents
.Range("V7").Resize(a1, 3).Value = Arr7

End If
End With

End Sub
 
Code này của em khá đơn giản. Nhưng nó báo lỗi 1004 ở đoạn này .Range("V7").Resize(a1, 3).Value = Arr7 mà em không hiểu vì sao ạ ? Mọi người xem giúp em với ạ.
Mã:
Sub KET_QUA()
Dim arr(), Arr7(), i As Long, lr As Long, a1 As Long
With Sheets("KQ")
         lr = .Range("b" & Rows.Count).End(xlUp).Row
         arr = .Range("b7:q" & lr).Value
         ReDim Arr7(1 To UBound(arr), 1 To 3)
         For i = 1 To UBound(arr)
                a1 = a1 + 1
                Arr7(a1, 1) = arr(i, 13) - arr(i, 10)
                Arr7(a1, 2) = arr(i, 16) - arr(i, 10)
                If Arr7(a1, 2) > 0 Then
                Arr7(a1, 3) = "Tot"
                Else
                Arr7(a1, 3) = "Can co gang"
               End If
             
        Next i

If a1 > 0 Then
.Range("V7:X90000").ClearContents
.Range("V7").Resize(a1, 3).Value = Arr7

End If
End With

End Sub
Sao không đưa file lên xem cụ thể bạn nhỉ.
 
Upvote 0
Mình giả lập file & chạy thấy vẫn OK mà:

Mã NVHọ ĐệmTênDòngGPE02Ngày sinhMã HVSố conNgày KHĐịa chỉNgày LD
1​
2​
3​
4​
5​
6​
7​
8​
9​
10​
11​
12​
13​
14​
15​
16​
432435HồAn
7​
07/09/1995​
CN
4​
11/14/1999​
Hà Nội
9/16/1977​
1529​
-6565​
Cân Cô Gáng Thêm
542619
8​
01/09/1996​
CD
7​
12/16/1999​
Thái Bình
8/19/1967​
1201​
-10606​
Cân Cô Gáng Thêm
043555Mỡ
9​
27/08/1997​
TS
4​
1/17/2000​
Vĩnh Phúc
7/21/2020​
873​
8364​
Tôt!
523465Ái
10​
22/08/1998​
CN
6​
2/18/2000​
Phú Thọ
6/23/1947​
545​
-18688​
Cân Cô Gáng Thêm
532546TừÁn
11​
17/08/1999​
CD
5​
3/21/2000​
Hưng Yên
5/25/1937​
217​
-22729​
Cân Cô Gáng Thêm
625656LữTừ
12​
11/08/2000​
CN
2​
4/22/2000​
Phú Iên
4/27/1927​
-111​
-26770​
Cân Cô Gáng Thêm
235454Sa
13​
06/08/2001​
CD
2​
5/24/2000​
Hà Nam
3/29/1917​
-439​
-30811​
Cân Cô Gáng Thêm

???
 
Upvote 0
Code này của em khá đơn giản. Nhưng nó báo lỗi 1004 ở đoạn này .Range("V7").Resize(a1, 3).Value = Arr7 mà em không hiểu vì sao ạ ? Mọi người xem giúp em với ạ.
Mã:
Sub KET_QUA()
Dim arr(), Arr7(), i As Long, lr As Long, a1 As Long
With Sheets("KQ")
         lr = .Range("b" & Rows.Count).End(xlUp).Row
         arr = .Range("b7:q" & lr).Value
         ReDim Arr7(1 To UBound(arr), 1 To 3)
         For i = 1 To UBound(arr)
                a1 = a1 + 1
                Arr7(a1, 1) = arr(i, 13) - arr(i, 10)
                Arr7(a1, 2) = arr(i, 16) - arr(i, 10)
                If Arr7(a1, 2) > 0 Then
                Arr7(a1, 3) = "Tot"
                Else
                Arr7(a1, 3) = "Can co gang"
               End If
           
        Next i

If a1 > 0 Then
.Range("V7:X90000").ClearContents
.Range("V7").Resize(a1, 3).Value = Arr7

End If
End With

End Sub
Chưa biết tại sao nhưng góp ý là biến a1 không cần thiết. Vòng lặp ghi hết dữ liệu qua Ubound(arr) dòng mà không bị hạn chế bởi điều kiện gì. Do đó, bỏ biến a1 và chỗ
Resize(a1, 3).Value = Arr7 sửa lại thành Resize(Ubound(arr), 3) hoặc Resize(i - 1, 3)
 
Lần chỉnh sửa cuối:
Upvote 0
. .
 
Lần chỉnh sửa cuối:
Upvote 0
Chưa biết tại sao nhưng góp ý là biến a1 không cần thiết. Vòng lặp ghi hết dữ liệu qua Ubound(arr) dòng mà không bị hạn chế bởi điều kiện gì. Do đó, bỏ biến a1 và chỗ
Resize(a1, 3).Value = Arr7 sửa lại thành Resize(Ubound(arr), 3) hoặc Resize(i - 1, 3)
Đã thử mọi cách các anh bảo nhưng không được. Khi em copy bảng đó ra File khác thì lại được là do đâu ạ. Bảng đầu của em trên File không có ẩn, không có khóa gì hết....THật sự không hiểu vì sao.
 
Upvote 0
Code này của em khá đơn giản. Nhưng nó báo lỗi 1004 ở đoạn này .Range("V7").Resize(a1, 3).Value = Arr7 mà em không hiểu vì sao ạ ? Mọi người xem giúp em với ạ.
Mã:
Sub KET_QUA()
Dim arr(), Arr7(), i As Long, lr As Long, a1 As Long
With Sheets("KQ")
         lr = .Range("b" & Rows.Count).End(xlUp).Row
         arr = .Range("b7:q" & lr).Value
         ReDim Arr7(1 To UBound(arr), 1 To 3)
         For i = 1 To UBound(arr)
                a1 = a1 + 1
                Arr7(a1, 1) = arr(i, 13) - arr(i, 10)
                Arr7(a1, 2) = arr(i, 16) - arr(i, 10)
                If Arr7(a1, 2) > 0 Then
                Arr7(a1, 3) = "Tot"
                Else
                Arr7(a1, 3) = "Can co gang"
               End If
             
        Next i

If a1 > 0 Then
.Range("V7:X90000").ClearContents
.Range("V7").Resize(a1, 3).Value = Arr7

End If
End With

End Sub
code chạy tốt mà, bạn coi định dạng ngày tháng thử coi
 
Upvote 0
Đến 11 bài rồi mà chủ bài đăng vẫn bướng bĩnh không chịu đưa file giả lập lên; Bạn tưởng rằng bạn có quyền đó à; rằng mọi người 'làm' bằng được cho tôi, còn tôi thì phán vài câu không đâu vào đâu hay sao, mỗi khi có người trả lời!

Hay bạn muốn lái xe Matza vi vu Phú Nhuận?
 
Upvote 0
Đến 11 bài rồi mà chủ bài đăng vẫn bướng bĩnh không chịu đưa file giả lập lên; Bạn tưởng rằng bạn có quyền đó à; rằng mọi người 'làm' bằng được cho tôi, còn tôi thì phán vài câu không đâu vào đâu hay sao, mỗi khi có người trả lời!

Hay bạn muốn lái xe Matza vi vu Phú Nhuận?
Không phải em không muốn đưa. Mà vì em đã copy dữ liệu đó ra file mới thì làm được ạ. File cũ của em em đã xử lý cách do mọi người bày mà không được ạ. Nên em làm ra File mới rồi ạ.
 
Upvote 0
Không phải em không muốn đưa. Mà vì em đã copy dữ liệu đó ra file mới thì làm được ạ. File cũ của em em đã xử lý cách do mọi người bày mà không được ạ. Nên em làm ra File mới rồi ạ.
Có thể bạn chạy code trên tập tin đuôi *.xls bạn thử chuyển sang *.xlsm hoặc *.xlsb xem.
 
Upvote 0
Không phải em không muốn đưa. (2)Mà vì em đã copy dữ liệu đó ra file mới thì làm được ạ. (1) File cũ của em em đã xử lý cách do mọi người bày mà không được ạ. Nên em làm ra File mới rồi ạ.
(1) Như thế nào là không được:
Xử theo Nick AAA thì lỗi gì, xử theo cô BBB thì chương trình chạy mút chỉ. . . (?) & chạy theo em CCC thì không đưa ra kết quả hay kết quả không theo ý cá nhân mong mõi (?),. . . .
. . . . . .
(2) Đã làm được như vậy cũng không công bộ cho bàn dân thiên hạ, nhất là những thành viên có nhã ý giúp bạn. . . .(!)

(3) Bạn cho rằng được như (2) là OK rồi; Nhưng bạn chưa có bài học nào do chạy file bản gốc mà không có kết quả hay kết quả đem lại chưa đúng mong muốn,. . . (?)

(4) Tựu chung phương châm của bạn với GPE.COM: Im lặng là Au (*) chăng?
______________________________________
(*) Au là kí hiệu hóa học của nguyên tố mắc hơn Ag & rẽ hơn Pt!
 
Upvote 0
Web KT
Back
Top Bottom