Private Sub Worksheet_Change(ByVal Target As Range)
''//ca_dafi: Code này chép vào sheet("xuat")
On Error Resume Next
''//Khi nhập Mã hàng sẽ lấy tên hàng:
If Not Intersect(Target, [A4:A65000]) Is Nothing Then
Target.Offset(, 1) = Application.WorksheetFunction.VLookup(Target, Sheets("nhap").[A:D], 2, 0)
End If
''//=====================================================================================================
''//Kiểm tra cột số lượng có phải là kiểu số không? Nếu có mới làm tiếp.
''//Sau đó kiểm tra số lượng tồn trước khi xuất, nếu số âm (<0) thì không cho xuất:
If Not Intersect(Target, [C4:C65000]) Is Nothing Then
If IsNumeric(Target) = False Or Target.Offset(, -2).Value = "" Then
MsgBox ("Phải là kiểu dữ liệu số, Hoặc phải nhập Mã hàng trước")
Exit Sub
Else
Dim TongSLNhap, TongGTNhap, TongSLXuat As Double
With Application.WorksheetFunction
TongGTNhap = .SumIf(Sheets("nhap").[A:A], Target.Offset(, -2), Sheets("nhap").[D:D])
TongSLNhap = .SumIf(Sheets("nhap").[A:A], Target.Offset(, -2), Sheets("nhap").[C:C])
TongSLXuat = .SumIf(Sheets("xuat").Range("A4:A" & Target.Row), _
Target.Offset(, -2), Sheets("xuat").Range("C4:C" & Target.Row))
End With
If TongSLNhap - TongSLXuat < 0 Or TongSLNhap = 0 Then
MsgBox ("Xuất vượt quá số tồn!")
Exit Sub
Else
MsgBox ("Số tồn còn lại của Mã Hàng: " & Target.Offset(, -2) & " là: " & (TongSLNhap - TongSLXuat))
Target.Offset(, 1).Value = Round(TongGTNhap / TongSLNhap,0) ''Đơn giá xuất, quy tròn
Target.Offset(, 2).Value = Target.Value * Target.Offset(, 1).Value ''Số tiền xuất
End If
End If
End If
End Sub