Lỗi code Xem Chi Tiết (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
965
Được thích
175
Giới tính
Nữ
Em có code xem chi tiết (Sheet"ChiTiet"), nhưng bị lỗi vàng ngay trong code
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$5" Then
  For i = 1 To UBound(Narr)  <--------loi vang ngay day
    If Narr(i, 5) = Target.Value Then
      [F5] = Narr(i, 6)
      Exit Sub
    End If
  Next i
End If
Call ChiTietCreat
End Sub
Khi chọn tên phụ liệu trong DataValidation thì chạy code, nhưng lỗi, và mong các anh chị chỉnh dùm code lấy số lượng tồn trong cell H5 của sheet"ChiTiet"
 

File đính kèm

(1) Nếu bạn thêm dòng lệnh này trước dòng báo lỗi:
Mã:
MsgBox UBound(Narr())
Thì chính dòng mới thêm sẽ được báo lỗi thay cho dòng lỗi trước đây;

(2) Nếu bạn thêm 3 dòng lệnh này thay vì 1 dòng lệnh trên:
PHP:
  With Sheets("Nhap")
    Narr = .Range("B3", .Range("H3").End(xlDown)).Resize(, 7).Value
  End With
Thì macro tiếp tục báo lỗi ở macro được macro sự kiện gọi
. . . . .
(3) Bạn tiếp tục tìm lỗi nữa xem sao;

Ý mình là bạn cần làm quen với các câu lệnh bẫy các lỗi
Các lệnh hay hàm xài trong VBA để moi ra các lỗi là:

Err;
Error
Erl
Resume
Goto
 
Upvote 0
Mong Thầy giúp em với, em không rành VBA.
 
Upvote 0
Em có viết đâu, toàn là code của các anh chị trên DD, rồi em "chế" lại.
Nếu được, mong Thầy viết mới lại dùm em ạ.
 
Upvote 0
Em xin nói rỏ là:
Khi chọn tên trong DataValidation xong->sự kiện Change->"F5"(Đơn vị tính) hiện theo tên phụ liệu trong "C5" ->"H5" hiện số lượng tồn của phụ liệu đó (do trong bang Danh Muc-cột D)->liệt kê ra tất cả chi tiết nhập và xuất của Tên Phụ Liệu trong "C5" vào B9:G, cột H=H5+F5-G5 và cứ thế tuần tự.
Mong Thầy giúp.
 
Upvote 0
Trước tiên ta nói về trang 'ChiTiet', cụ thể là cách nhập vô các trường hiện hữu là
[STT] (đã rõ & có thể xài công thức;
[Số] (chứng từ): Khi ghi dố liệu từ trang 'Nhập' vô trường này sẽ ghi là gì trong 2 trường [Số GD] hay [Số phiếu]?
Tương tự trang 'Xuat' ghi vô trường này sẽ là trương [Số phiếu] hay trường [Đơn hàng]?
[Trường [Diễn giải] sẽ ghi là những thứ gì từ 'Nhập' & 'Xuất'

2 trường [Số lượng nhập & xuất:= đã rõ
Cuối là trường [Tồn] sẽ là công thức;
Vấn đề nữa là kho thì có nhập mới có xuâất & chuyện lưu giữ số liệu trong trang 'ChiTiet' này sẽ theo tuần tự ngày tháng nhập - Xuất.

Chờ tin từ bạn.
 
Upvote 0
Sẽ theo tuần tự ngày tháng năm ạ.
Em xin lấy ví dụ như Tên phụ liệu là "Giấy Mỏng", và em gửi file lại (ví dụ như trong sheet"ChITiet")
 

File đính kèm

Upvote 0
Với những gì bạn có thì không biết, chỉ cần H5=VLOOKUP($C$5;DanhMuc!$B$4:$D$17;3;0) là xong
/(hông giản đơn như vậy đâu Thầy!
Dò tìm hết bên trang nhập rồi đất trang xuất
Bước nữa là đỗ dữ liệu lên trang ChiTiet & cuối là xếp theo ngày tháng tăng dần nữa.
 
Upvote 0
Các Thầy xem file ví dụ em gửi ở bài #9 đó.
Mong các Thầy giúp.
 
Upvote 0
/(hông giản đơn như vậy đâu Thầy!
Dò tìm hết bên trang nhập rồi đất trang xuất
Bước nữa là đỗ dữ liệu lên trang ChiTiet & cuối là xếp theo ngày tháng tăng dần nữa.
Sheet ChiTiet có chỗ nào là "ngày"?
Nếu không có thì cứ dò bên DanhMuc mà "phang" thôi.
 
Upvote 0
Cell "C9" và "E9" đó Thầy.
nên trong code cũ có
Mã:
Range("C9:G9").Resize(k).Sort [C9], 1, [E9], , 2, Header:=xlNo
 
Upvote 0
Em có code xem chi tiết (Sheet"ChiTiet"), nhưng bị lỗi vàng ngay trong code
......................................................
Khi chọn tên phụ liệu trong DataValidation thì chạy code, nhưng lỗi, và mong các anh chị chỉnh dùm code lấy số lượng tồn trong cell H5 của sheet"ChiTiet"
Khi xem Số phiếu và SL Nhập tôi thấy bạn làm thủ công (gộp từng cái vào) thấy oải quá nên không xem code.

Tôi thấy bạn nên theo dõi đến từng chi tiết đến từng đơn hàng (Số phiếu), chứ không nên cộng gộp vô như vậy, khi cần sẽ khó khăn trong việc truy vấn để kiểm tra lại bất kỳ 1 phiếu nào đó.
 
Upvote 0
Thì đó là file ví dụ, nên em gỏ tay vào.
 
Upvote 0
Bạn xem macro sự kiện tại trang 'CTiet'; Trang 'ChiTiet' của bạn có ma!
PHP:
Const SoDong As Long = 500
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C5]) Is Nothing Then
    Dim Sh As Worksheet, Arr()
    Dim Rws As Long, J As Long, Dem As Byte, W As Integer
    Dim ShName As String
    [a10].Resize(SoDong - 10, 7).ClearContents          'Xóa Du Liêu Làn Truóc'
    Rows("10:500").Hidden = False
    For Dem = 1 To 2
        ShName = Choose(Dem, "Nhap", "Xuat", "GPE.COM") '   1: Nhâp; 2: Xuât'
        Set Sh = ThisWorkbook.Worksheets(ShName)
        Rws = Sh.[b3].CurrentRegion.Rows.Count
        If Dem = 1 Then
            J = Rws + Sheets("Xuat").[b3].CurrentRegion.Rows.Count
            ReDim dArr(1 To J, 1 To 7)
        End If
        Arr() = Sh.[b3].Resize(Rws, 7).Value
        For J = 1 To UBound(Arr())
            If Arr(J, 5) = Target.Value Then
                W = W + 1:                  dArr(W, 1) = W
                dArr(W, 2) = Arr(J, 2):     dArr(W, 3) = Arr(J, 1)
                dArr(W, 4) = ShName:        dArr(W, 5) = Arr(J, 1)
                dArr(W, 5 + Dem) = Arr(J, 7)
            End If
        Next J
    Next Dem
    If W Then
        [a10].Resize(W, 7).Value = dArr()
    End If
    Range("b9:G9").Resize(W).Sort [C9], 1, [E9], , 2, Header:=xlYes '   Sáp Xêp'
    Rows(10 + W & ":499").Hidden = True
End If
End Sub
 

File đính kèm

Upvote 0
Thì đó là file ví dụ, nên em gỏ tay vào.
Theo tôi thì File trên tôi làm thế này:

1/ Thêm 1 sheet chung có cột nhập, xuất, tồn. Dựa vào sheet này sẽ có kết quả xuất, nhập, tồn của từng Tên Phụ Liệu.
2/ Thêm 1 sheet lọc Tên Phụ Liệu sau khi lọc xong mới gán dữ liệu vào sheet ChiTiet.
3/ Thêm 1 sheet gộp dữ liệu: Muốn gộp cái gì ở cột nào thì Copy dữ liệu vào sheet này và chạy code.
 
Upvote 0
Cám ơn Thầy SA_DQ!
File của Thầy giới hạn tới 500 dòng, em sợ là file của em sử dụng có thể nhiều hơn 500 dòng, mà nếu mở rộng số dòng ra thì công thức có thể chạy châm.và em thấy có gì sai trong số lượng tồn.
Ví dụ như Giấy Mỏng có SL tồn cell H21 là 37.300 mà SL tồn cell H22 là 300
và những phụ liệu nào không có Nhập, xuất, chỉ có tồn đầu khi xem bị lỗi.
Mong Thầy xem giúp.
 
Upvote 0
File của Thầy (1.0) giới hạn tới 500 dòng, em sợ là file của em sử dụng có thể nhiều hơn 500 dòng, mà nếu mở rộng số dòng ra thì (1.1) công thức có thể chạy châm.
& em thấy có gì sai trong số lượng tồn:
Ví dụ (3) như Giấy Mỏng có SL tồn cell H21 là 37.300 mà SL tồn cell H22 là 300
và (2) những phụ liệu nào không có Nhập, xuất, chỉ có tồn đầu khi xem bị lỗi.
Mong xem giúp.

(1.0) Theo như dòng lệnh
Mã:
 Const SoDong As Long = 500
thì đang giới hạn là vậy;
Nếu tăng số này lên 999 (ví dụ) thì kéo theo những dòng lệnh nơi nào có liên quan đến tham biến 'SoDong' này đều thay đổi tương ứng;
(& thay đổi cả trong Format viền khung nữa)
(1.1) Đến lúc í thì trình VBA của bạn đã (sẽ fải) nâng cao để sửa, nếu không có ai giúp bạn như bây chừ.
Cách sửa có thể là: sau khi đổ dữ liệu lên trang này & sắp xếp xong thì tạo vòng lặp mà duyệt từ dòng 10 trở xuống tận cùng để gán số liệu thích hợp cho cột [tồn] này.

(2) & (3) Chuyện này sẽ ngâm cứu tiếp vào trưa này . . . .
 
Upvote 0
Web KT

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

Back
Top Bottom