Giúp kiểm lỗi "type mismatch" runtime error 13

Liên hệ QC

khuongnguyen124

Thành viên mới
Tham gia
8/5/12
Bài viết
21
Được thích
4
Giới tính
Nữ
Nghề nghiệp
Accounting
Các cao nhân giúp em lỗi đoạn code này với ạ.
Lỗi báo về là runtime error 13, type mismach.
Em tìm mãi chẳng ra. Đoạn code này em xin từ 1 cao nhân khác, về vừa dùng vừa học. Vừa rồi test thử cái VBA protection xong cái không dùng được nữa, cứ bị báo lỗi thế này không rõ là do đâu ạ
Cám ơn ạ!

Sub FIFO_VBA1() 'Tinh gia xuat kho theo PP FIFO Item1
Dim SL_Xuat_Item1 As Long 'Thiet lap bien xac dinh so luong can xuat
Dim a1 As Integer 'Bien a1 chay trong vong lap xet lan xuat
Dim b1 As Integer 'Bien b1 chay trong vong lap xet so luong xuat dua tren so da nhap
Dim SL_Cac_Lan_Nhap_Item1 As Long 'So luong cac lan nhap xet theo FIFO
Dim TT_Xuat_Item1 As Double 'Gia tri xuat kho
Dim cot_SL_Nhap_Item1 As Variant 'Thiet lap bien cot so luong nhap
Dim cot_DG_Nhap_Item1 As Variant 'Thiet lap bien cot don gia nhap

Range("I3:I1000").ClearContents 'Lam moi cot ket qua gia tri xuat kho tinh bang FIFO

cot_SL_Nhap_Item1 = Range("C3", Range("C65536").End(xlUp)) 'Cot so luong nhap
cot_DG_Nhap_Item1 = Range("D3", Range("D65536").End(xlUp)) 'Cot don gia nhap

For a1 = 3 To Range("A" & Rows.Count).End(xlUp).Row 'Xet vong lap dua tren tong so dong cot A, tu dong 2 den dong cuoi cung co du lieu
TT_Xuat_Item1 = 0 'Gia tri xuat kho ban dau
SL_Xuat_Item1 = Range("H" & a1) 'So luong xuat ban dau, xet tai cot H, bien a1
b1 = 1 'Tai vi tri bat dau, bien b1 se la dong thu nhat
Do While SL_Xuat_Item1 > 0 'Chi xet khi so luong xuat ban dau >0
SL_Cac_Lan_Nhap_Item1 = cot_SL_Nhap_Item1(b1, 1) 'Xet tung lan nhap
cot_SL_Nhap_Item1(b1, 1) = IIf(cot_SL_Nhap_Item1(b1, 1) > SL_Xuat_Item1, cot_SL_Nhap_Item1(b1, 1) - SL_Xuat_Item1, 0) 'Ham iif de viet truc tiep ham If trong VBA, tinh so luong xuat phan bo cho cac lan nhap
SL_Xuat_Item1 = SL_Xuat_Item1 - (SL_Cac_Lan_Nhap_Item1 - cot_SL_Nhap_Item1(b1, 1)) 'So luong tinh xuat kho theo cac lan nhap
TT_Xuat_Item1 = TT_Xuat_Item1 + (SL_Cac_Lan_Nhap_Item1 - cot_SL_Nhap_Item1(b1, 1)) * cot_DG_Nhap_Item1(b1, 1) 'Thanh tien xuat kho theo cac lan nhap
b1 = b1 + 1 'lap lai bien b1 toi cac lan xuat tiep theo cho toi khi du so luong xuat
Loop
Range("I65536").End(xlUp)(2) = TT_Xuat_Item1 'Lay ket qua gia tri xuat kho
Next a1
End Sub
 
Dòng nào báo lỗi vậy bạn?
 
Upvote 0
Các cao nhân giúp em lỗi đoạn code này với ạ.
Lỗi báo về là runtime error 13, type mismach.
Em tìm mãi chẳng ra. Đoạn code này em xin từ 1 cao nhân khác, về vừa dùng vừa học. Vừa rồi test thử cái VBA protection xong cái không dùng được nữa, cứ bị báo lỗi thế này không rõ là do đâu ạ
Cám ơn ạ!

Sub FIFO_VBA1() 'Tinh gia xuat kho theo PP FIFO Item1
Dim SL_Xuat_Item1 As Long 'Thiet lap bien xac dinh so luong can xuat
Dim a1 As Integer 'Bien a1 chay trong vong lap xet lan xuat
Dim b1 As Integer 'Bien b1 chay trong vong lap xet so luong xuat dua tren so da nhap
Dim SL_Cac_Lan_Nhap_Item1 As Long 'So luong cac lan nhap xet theo FIFO
Dim TT_Xuat_Item1 As Double 'Gia tri xuat kho
Dim cot_SL_Nhap_Item1 As Variant 'Thiet lap bien cot so luong nhap
Dim cot_DG_Nhap_Item1 As Variant 'Thiet lap bien cot don gia nhap

Range("I3:I1000").ClearContents 'Lam moi cot ket qua gia tri xuat kho tinh bang FIFO

cot_SL_Nhap_Item1 = Range("C3", Range("C65536").End(xlUp)) 'Cot so luong nhap
cot_DG_Nhap_Item1 = Range("D3", Range("D65536").End(xlUp)) 'Cot don gia nhap

For a1 = 3 To Range("A" & Rows.Count).End(xlUp).Row 'Xet vong lap dua tren tong so dong cot A, tu dong 2 den dong cuoi cung co du lieu
TT_Xuat_Item1 = 0 'Gia tri xuat kho ban dau
SL_Xuat_Item1 = Range("H" & a1) 'So luong xuat ban dau, xet tai cot H, bien a1
b1 = 1 'Tai vi tri bat dau, bien b1 se la dong thu nhat
Do While SL_Xuat_Item1 > 0 'Chi xet khi so luong xuat ban dau >0
SL_Cac_Lan_Nhap_Item1 = cot_SL_Nhap_Item1(b1, 1) 'Xet tung lan nhap
cot_SL_Nhap_Item1(b1, 1) = IIf(cot_SL_Nhap_Item1(b1, 1) > SL_Xuat_Item1, cot_SL_Nhap_Item1(b1, 1) - SL_Xuat_Item1, 0) 'Ham iif de viet truc tiep ham If trong VBA, tinh so luong xuat phan bo cho cac lan nhap
SL_Xuat_Item1 = SL_Xuat_Item1 - (SL_Cac_Lan_Nhap_Item1 - cot_SL_Nhap_Item1(b1, 1)) 'So luong tinh xuat kho theo cac lan nhap
TT_Xuat_Item1 = TT_Xuat_Item1 + (SL_Cac_Lan_Nhap_Item1 - cot_SL_Nhap_Item1(b1, 1)) * cot_DG_Nhap_Item1(b1, 1) 'Thanh tien xuat kho theo cac lan nhap
b1 = b1 + 1 'lap lai bien b1 toi cac lan xuat tiep theo cho toi khi du so luong xuat
Loop
Range("I65536").End(xlUp)(2) = TT_Xuat_Item1 'Lay ket qua gia tri xuat kho
Next a1
End Sub
Cho cái file lên và nói mục đích sử dụng.Có code mới và đẹp.Với anh
leonguyenz
Và bác
SA_DQ
 
Upvote 0
Xin lỗi bác là hôm qua em xem qua điện thoại không kỹ nên đoán mò!
Giờ kiểm tra lại (chưa xét đến giải thuật) thì chưa phát hiện lỗi.
Các biến khai báo As Long, nhưng trên Sheet là dạng khác, có thể là chuổi nên báo lổi ở 2 dòng lệnh
SL_Xuat_Item1 = Range("H" & a1) 'So luong xuat ban dau, xet tai cot H, bien a1
SL_Cac_Lan_Nhap_Item1 = cot_SL_Nhap_Item1(b1, 1) 'Xet tung lan nhap
 
Upvote 0
Vấn đề là hiểu chỗ này chết liền:

Các cao nhân giúp em lỗi đoạn code này với ạ.
Lỗi báo về là runtime error 13, type mismach.
Em tìm mãi chẳng ra. Đoạn code này em xin từ 1 cao nhân khác, về vừa dùng vừa học. Vừa rồi test thử cái VBA protection xong cái không dùng được nữa, cứ bị báo lỗi thế này không rõ là do đâu ạ
...

Chắc tại mình chưa đạt đến cao nhơn. :(:(:(
 
Upvote 0
Em gái chủ thớt quăng cái đống code không trong thẻ, không file lên, rồi bỏ đi mất tiêu. Các bác vào đoán già đoán non...
Mấy cái topic n dạng này là phải nhắc nhở liền. Cứ quăng đại lên chờ người khác làm 100% xong rồi lấy về dùng.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom