[Help] Phầm mềm nhập và quản lý linh kiện lỗi trong sản xuất

Liên hệ QC

vuvanthe2000

Thành viên mới
Tham gia
29/12/10
Bài viết
34
Được thích
11
Giới tính
Nam
Gửi các bậc tiền bối.
Em đang mày mò học và viết phần mềm VBA nhập và quản lý linh kiện lỗi trong sản xuất.
Tuy nhiên em đang gặp phải một số vấn đề khó khăn nhờ các bậc tiền bối giúp.
1. Code xong vùng tìm kiếm dữ liệu nhưng khi tìm kiếm không ra. ( mong muốn tìm kiếm tương đối, không tìm kiếm tuyệt đối - chỉ cần gõ gần đúng là có thể ra những thứ liên quan)
2. Ở vị trí phân loại lỗi 1 và phân loại lỗi 2. Em mong muốn tạo giống như là Data Vadidation list ( ví dụ: phân loại lỗi 1, và phân loại lỗi 2 sẽ chọn Data Vaddation list từ sheet Luu tru)
3. Em mong muốn chỉ cần nhập mã linh kiện thì tại ô tên linh kiện và Model sử dụng từ khắc hiện ra ( tìm kiếm tại sheet Data base rồi điền tại 2 ô đó)

Chắc phần mềm này còn phải hoàn hiện và thảo luận dài dài.
Mong các tiến bối giúp đỡ và chỉ bảo thêm.
Em xin đính kèm bên dưới
Em cảm ơn!
 

File đính kèm

  • Quan ly va thong ke linh kien loi.zip
    249.7 KB · Đọc: 24
. . . . . đã vận hành thử rồi tuy nhiên (1) có một số điều thắc mắc như ảnh đính kèm nhờ bác sửa giúp ạ.
(2) Ngoài ra, cháu có một điều nhờ nho nhỏ nhờ bác giúp. Cháu mới học VBA nên việc đọc mã code vẫn còn ngu ngơ. Vì vậy cảm phiền bác ghi comment bên cạnh code được không ạ?
(1) Thắc mắc thì giải đáp; Không thể thắc mắc thì nhờ sửa được.
(1.1) Về danh mục các Moden bạn có đưa ra đâu mà bảo người khác tạo List để bạn chọn kia chứ?
(1.2) Bạn muốn tách ra 2 cấp độ lỗi thì cứ việc tách theo mong muốn; Dù sao cũng đã cung cấp cho bạn cơ sở để tách: Đó là kí tự đầu của mã lỗi rồi đấy thay

(2) Còn chuyện dịch từ ngôn ngữ VBA sang tiếng Việt thì bạn cứ đánh dấu những dòng lệnh mà bạn còn mơ hồ; Mình sẽ chỉ diễn dịch các dòng í; Bạn tìm cách chú thích vô theo ý bạn hiểu là được.
Còn bạn vẫn muốn diễn dịch hết thì trươc tiên bạn hãy diễn dịch các macro mà bạn đã viết đi đã.
 
Upvote 0
(1.1) Về danh mục các Moden bạn có đưa ra đâu mà bảo người khác tạo List để bạn chọn kia chứ?

Thưa bác SA_DQ, trong sheet Dmuc có sẵn thông tin Model sử dụng rồi ạ. Ví dụ hình ảnh cháu gửi. Linh kiện có mã là 101002 sử dụng cho các Model: ST-P-OM, DOS-3...
 

File đính kèm

  • model.JPG
    model.JPG
    146.7 KB · Đọc: 7
Upvote 0
Bạn vận hành thử xem
 

File đính kèm

  • Form.rar
    67.8 KB · Đọc: 14
Upvote 0

File đính kèm

  • try1.JPG
    try1.JPG
    95.9 KB · Đọc: 16
  • try2.JPG
    try2.JPG
    194.4 KB · Đọc: 20
  • Idea_loi LK.JPG
    Idea_loi LK.JPG
    54 KB · Đọc: 14
Upvote 0
Ba cái hình đó chả nói lên điều gì ra hồn.
Khoan hãy nói về mã lỗi & danh sách hay chuyện nhập nó.
Giờ nên xoay quanh vấn đề mới nổi cộm là hiện nội dung ComboBox đúng như mã linh kiện đã chọn.
Những lần tới mình sẽ không xem các hình nữa đâu; Mô tả công việc bằng lời đi thôi.
 
Upvote 0
Giờ nên xoay quanh vấn đề mới nổi cộm là hiện nội dung ComboBox đúng như mã linh kiện đã chọn.

Với cháu thì hiển thị như vậy là được rồi ạ. Chỉ cần nhập mã linh kiện vào và hiển thị lên những Model gần đúng liên quan như thế này còn tuyệt vời hơn hiển thị ra kết quả tuyệt đối.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình sẽ diễn dịch macro (cha trước, 2 con bài sau) dùng để tìm mã linh kiện & tên linh kiện trong trang 'DMuc' & trong trang 'Data' đã được chọn
Macro cha/mẹ có nội dung sau:
PHP:
Private Sub tbTimMa_Change()
1 Dim ShName As String

20 If Len(Me!tbTimMa.Text) <> 4 Then Exit Sub
If Me!cbSh.Text = "Danh Muc" Then
22    ShName = "DMuc"
ElseIf Me!cbSh.Text = "Data" Then
24    ShName = "Data"
End If
30 ReDim Ar0(1 To 99, 1 To 10)
Ar0(1, 2) = "Mã":                       Ar0(1, 3) = "Tên Linh Kiên"
32 W = 1:                                          Ar0(2, 2) = "Nothing"
Ar0(1, 1) = "STT"
34 Set Sh = ThisWorkbook.Worksheets(ShName)
40 If ShName = "DMuc" Then
    TimMaLinhKien
42    Me!TxtSoTT.Value = 1 + Me!tbSTT.Value
ElseIf ShName = "Data" Then
44    Ar0(1, 4) = "Model":                Ar0(1, 5) = "Lôi là"
    Ar0(1, 6) = "Mã"
46    MaLKDaNhap
End If
50 If W Then
    Me.lbDS.List = Ar0()
52 End If
Set Sh = Nothing
End Sub
D1: Khai báo 1 biến kiểu chuỗi để xài lúc cần
D20: Tạo điều kiện chỉ chạy macro khi ta nhập vô Control chuỗi 4 kí số
D21: Nếu nội dung chứa trong ComboBox là 'Danh Muc' thì thực hiện ngay dòng lệnh D22
D23: Nếu trong ComboBox chứa chuỗi 'Data' thì thực thi D24
Hai lệnh D22 & D24 là gán tên trang tính tương ứng vô biến
D30: Khai báo 1 biến mảng gồm ~ trăm dòng & mươi cột
D31: D33 Ta ấn định trước các chuỗi cho các phần tử thuộc dòng d9a662u của mảng vừa khai báo
D40: Điều kiện nếu tên trang tính chứa trong biến chuỗi là 'DMuc' thì cho chạy macro con có tên là 'TimMaLinhKien'
D42: Gán số thứ tự cho dòng dữ liệu sẽ nhập
Điều kiện Nếu tên trang tính tương ứng là 'Data' thì thực hiện các lệnh từ D44 đến D46
3 mệnh đề dòng lệnh 44->45 : Xem lại tương tự D31: D33
D46: Gọi macro con tương ứng chạy (Tìm mã LK & tên LK đã nhập trong trang 'Data'
D50-D52: Gán mảng dữ liệu lên ListBox
D53: Xóa biến đối tượng dùng chung Sh
 
Lần chỉnh sửa cuối:
Upvote 0
Mã:
 W = 1:                     Ar0(2, 2) = "Nothing"
(1)
Vì ta đã đưa các tiêu đề trường (cột) nên W sẽ phải là 1 để ghi tiếp vô dòng W=2 những dữ liệu tìm thấy;
Ta ghi trước Ar0(2,2) là chuỗi 'Nothing' để khi không tìm thấy dữ liệu ListBox báo ta biết là không tìm thấy (DL)

(2) Mã của bạn gồm 6 kí số; & macro hiện tại chọn 4 kí số đầu để tìm kiếm trong các trang.
Nếu tăng lên 5 thì: Danh sách tìm thấy sẽ ít hơn đi;
Nhưng như vậy bộ nhớ của bạn vể mã linh kiện sẽ phải vất vả hơn thôi.
Người ngoại đạo như mình thì những con số đó là vô tri giác; Trong ngành, nên tự bạn phải quyết định 4 hay 5 cho công việc của bạn suông sẻ.
 
Upvote 0
Bác SA_DQ cho cháu hỏi là cháu viết mã lệnh sau vào Sub button Thêm vào:

If txtSott.Vaule = "" Then
MsgBox "Ban nhap thieu du lieu", vbExclamation, "Thông báo"
Exit sub
End If

Như này có đúng không ạ mà cháu thấy không chạy được. Ý của cháu muốn là: nếu ô nhập dữ liệu Số TT không có thì sẽ không cho nhập dữ liệu.

Ngoài ra nhờ bác giải thích giúp cháu nốt 2 đoạn mã lệnh con.
Cháu cảm ơn!
 
Upvote 0
Thì bạn viết thử vầy:
Mã:
If Len(Me!txtSott.Text) = 0 Then
   MsgBox "Ban Nhâp Thiêu Du Liêu", vbExclamation, "Thông báo"
  Exit sub
Else
    Msgbox "Xin Chúc Ban Thành Công!",, "GPE.COM"
End If

PHP:
Sub TimMaLinhKien()
   Dim W As Integer, J As Long, Rws As Long  '<=|  Khai Báo Các Biến  '
    Dim Arr()
     Rws = Sh.[E2].CurrentRegion.Rows.Count   ' Lây Sô Dòng Của Vùng Gán Vô Biên    '
    'Nap Du Liêu Vô Biên Mang  :   '
     Arr() = Sh.[E2].Resize(Rws, 2).Value:          W = 1   ' Ân Dinh Tri Cho Biên Dêm   '
    For J = 1 To UBound(Arr())
        If CStr(Left(Arr(J, 1), 4)) = Me!tbTimMa.Text Then  'Nêu Thoa D/K Thì Ghi Vô Mảng Kêt qua   '
            W = W + 1:                          Ar0(W, 2) = Arr(J, 1)
            Ar0(W, 3) = Arr(J, 2):              Ar0(W, 1) = W
        End If
    Next J
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Thì bạn viết thử vầy:
Mã:
If Len(Me!txtSott.Text) = 0 Then
   MsgBox "Ban Nhâp Thiêu Du Liêu", vbExclamation, "Thông báo"
  Exit sub
Else
    Msgbox "Xin Chúc Ban Thành Công!",, "GPE.COM"
End If

PHP:
Sub TimMaLinhKien()
   Dim W As Integer, J As Long, Rws As Long  '<=|  Khai Báo Các Biến  '
    Dim Arr()
     Rws = Sh.[E2].CurrentRegion.Rows.Count   ' Lây Sô Dòng Của Vùng Gán Vô Biên    '
    'Nap Du Liêu Vô Biên Mang  :   '
     Arr() = Sh.[E2].Resize(Rws, 2).Value:          W = 1   ' Ân Dinh Tri Cho Biên Dêm   '
    For J = 1 To UBound(Arr())
        If CStr(Left(Arr(J, 1), 4)) = Me!tbTimMa.Text Then  'Nêu Thoa D/K Thì Ghi Vô Mảng Kêt qua   '
            W = W + 1:                          Ar0(W, 2) = Arr(J, 1)
            Ar0(W, 3) = Arr(J, 2):              Ar0(W, 1) = W
        End If
    Next J
End Sub

Cảm ơn bác SA_DQ,
Bác cho cháu hỏi là cháu viết đoạn Code như này vào txtTenLK sai ở đâu mà không chạy được ạ?

TxtTenLK.Value = Application.WorksheetFunction.VLookup(TxtMaLK.Value, Sheet2.Range("E2:F10000"), 2, False)

Ý của muốn là nếu đánh mã linh kiện trực tiếp vào Textbox TxtMaLK thì dùng hàm VLoopup tìm kiếm trong sheet DMuc ra được tên LK và điền vào ô TextBox Tên Linh kiện.
Cháu đang học Code nên viết thử nhiều trường hợp để học ạ.
 
Upvote 0
Bạn sao không chọn trong danh sách của ListBox mà đi xài VLOOKUP của Excel?
Có khi nào bạn nhập mã mà không có trong danh mục sẽ báo lỗi?
. . . ?
 
Upvote 0
Web KT
Back
Top Bottom