NHờ tạo US FORM nhập dữ liệu có gợi ý từ danh sách có sẵn. (1 người xem)

Liên hệ QC

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

hungvinhhao

Thành viên mới
Tham gia
19/1/08
Bài viết
28
Được thích
1
em có 1 file muốn dùng US FORM nhập dữ liệu có gợi ý từ danh sách có sẵn. nội dung cụ thể em viết ở sheet " nhờ giúp đỡ" trong file đính kèm. Rất mong các cao thủ làm giúp em. Em cảm ơn rất nhiều
 

File đính kèm

Mình thao tác trên file của bạn thấy thường mà!
Bạn thử ghi chép lại cái anh chàng hay cô nàng nào không cập nhật xem nào?

Nên thử các ngày từ nhỏ (5/12) cho đến ngày lớn nhất.
Riêng cột bạn vừa thêm thì sẽ chưa thể vô hay sửa số liệu trong cột nớ được.
Để có thể kiểm tra trên ListBox có cập nhật không, bạn fải chịu khó nhập lại ngày & nhấn nút lệnh 'Tìm DL Ngày"

< Kể ra cũng khá khen bạn chịu khó từ hôm qua đến giờ í nhì!>
 
Lần chỉnh sửa cuối:
Upvote 0
Mình thao tác trên file của bạn thấy thường mà!
Bạn thử ghi chép lại cái anh chàng hay cô nàng nào không cập nhật xem nào?

Nên thử các ngày từ nhỏ (5/12) cho đến ngày lớn nhất.
Riêng cột bạn vừa thêm thì sẽ chưa thể vô hay sửa số liệu trong cột nớ được.
Để có thể kiểm tra trên ListBox có cập nhật không, bạn fải chịu khó nhập lại ngày & nhấn nút lệnh 'Tìm DL Ngày"

< Kể ra cũng khá khen bạn chịu khó từ hôm qua đến giờ í nhì!>
@Hoang2013 Nếu làm đúng thì chỉ có đúng ngày 24/04 thôi còn các ngày khác khi lưu lại nó không ghi đè lên chỗ mình cần lưu mà nó ghi đè lên những ngày trước. Em đã thử chọn 1 ô tăng ca 200% rồi test thử kết quả là nó lưu ngày nhỏ đến lớn OK nếu mình sửa như thứ tự. Cơ mà đến ngày bất kỳ thì nó sẽ ghi đè lên hàng ngày phía trên. Giúp em với nhé.
Hôm qua em tăng ca ở công ty mò cái file này với lại làm một cái biểu đồ động khá là ưng ý hi hi. Có khi nào học nhiều bị cuồng Excel không ta:p
 

File đính kèm

Upvote 0
Ôi mình thật sự xin lỗi bạn, Macro còn thiếu nhiều dòng lệnh để tìm đúng ngày cần chép!
Bạn lấy toàn bộ macro này chép đè hết lên cái cũ là được:
(Các dòng lệnh mới thêm mình có đánh dấu bỡi '*')
PHP:
Private Sub CmdSave_Click()
 Dim Rng As Range, sRng As Range
 Dim MyColor As Long
 Dim MyAdd As String                            '*'
On Error GoTo LoiCT
1 'Luu Du Liêu Truóc Thay Doi:                  '
 With Sheets("Record").Range("A65500").End(xlUp)
    .Offset(1).Value = .Value + 1
    .Offset(1, 1).Resize(, 16).Value = Arr0()
    Erase Arr0()
 End With
2 ' Luu Du Lieu Mói Thay Doi:                   '
 Set Rng = Range([B2], [B2].End(xlDown))
 Set sRng = Rng.Find(Me!tbCode.Value, , xlFormulas, xlWhole)
 If sRng Is Nothing Then
    MsgBox "Nothing"
 Else
    MyAdd = sRng.Address                        '*'
    Do                                          '*'
        If Cells(sRng.Row, "H").Value = TxtToDate(Me!tbDate.Text) Then    '*'
            With sRng.Interior
                MyColor = .ColorIndex
                If MyColor < 30 Or MyColor = 43 Then
                    .ColorIndex = 34
                Else
                    .ColorIndex = MyColor + 1
                End If
            End With
            Cells(sRng.Row, 4).Value = Me!tbG.Value
            Cells(sRng.Row, 5).Value = Me!tbGr.Text
            Cells(sRng.Row, 6).Value = Me!tbPos.Text
            Cells(sRng.Row, 7).Value = Me!tbShift.Text
            Cells(sRng.Row, 8).Value = Me!tbDate.Value
            Cells(sRng.Row, 9).Value = Me!tbjob.Text
            Cells(sRng.Row, 10).Value = Me!tb150.Value
            Cells(sRng.Row, 11).Value = Me!tb175.Value
            Cells(sRng.Row, 12).Value = Me!tb200.Value
            Cells(sRng.Row, 13).Value = Me!tb215.Value
            Cells(sRng.Row, 14).Value = Me!tb300.Value
            Cells(sRng.Row, 15).Value = Me!tbTre.Value
            Cells(sRng.Row, 16).Value = Me!tbSom.Value
            Cells(sRng.Row, 17).Value = Me!cbFep.Value
        End If
        Set sRng = Rng.FindNext(sRng)                           '*'
    Loop While Not sRng Is Nothing And sRng.Address <> MyAdd    '*'
 End If
 Me!tbCode.Value = "":                          Me!tbName.Value = ""
 MsgBox "Luu Xong Ròi!", , "GPE.COM Xin Thông Báo!"
Err_:                                           Exit Sub
LoiCT:
    If Err = 13 Then
        MsgBox "GPE.COM Tam Biet!":             Resume Err_
    Else
        MsgBox Err, , Error()
    End If
End Sub]/php]
 
Upvote 0
Ôi mình thật sự xin lỗi bạn, Macro còn thiếu nhiều dòng lệnh để tìm đúng ngày cần chép!
Bạn lấy toàn bộ macro này chép đè hết lên cái cũ là được:
(Các dòng lệnh mới thêm mình có đánh dấu bỡi '*')
PHP:
Private Sub CmdSave_Click()
Dim Rng As Range, sRng As Range
Dim MyColor As Long
Dim MyAdd As String                            '*'
On Error GoTo LoiCT
1 'Luu Du Liêu Truóc Thay Doi:                  '
With Sheets("Record").Range("A65500").End(xlUp)
    .Offset(1).Value = .Value + 1
    .Offset(1, 1).Resize(, 16).Value = Arr0()
    Erase Arr0()
End With
2 ' Luu Du Lieu Mói Thay Doi:                   '
Set Rng = Range([B2], [B2].End(xlDown))
Set sRng = Rng.Find(Me!tbCode.Value, , xlFormulas, xlWhole)
If sRng Is Nothing Then
    MsgBox "Nothing"
Else
    MyAdd = sRng.Address                        '*'
    Do                                          '*'
        If Cells(sRng.Row, "H").Value = TxtToDate(Me!tbDate.Text) Then    '*'
            With sRng.Interior
                MyColor = .ColorIndex
                If MyColor < 30 Or MyColor = 43 Then
                    .ColorIndex = 34
                Else
                    .ColorIndex = MyColor + 1
                End If
            End With
            Cells(sRng.Row, 4).Value = Me!tbG.Value
            Cells(sRng.Row, 5).Value = Me!tbGr.Text
            Cells(sRng.Row, 6).Value = Me!tbPos.Text
            Cells(sRng.Row, 7).Value = Me!tbShift.Text
            Cells(sRng.Row, 8).Value = Me!tbDate.Value
            Cells(sRng.Row, 9).Value = Me!tbjob.Text
            Cells(sRng.Row, 10).Value = Me!tb150.Value
            Cells(sRng.Row, 11).Value = Me!tb175.Value
            Cells(sRng.Row, 12).Value = Me!tb200.Value
            Cells(sRng.Row, 13).Value = Me!tb215.Value
            Cells(sRng.Row, 14).Value = Me!tb300.Value
            Cells(sRng.Row, 15).Value = Me!tbTre.Value
            Cells(sRng.Row, 16).Value = Me!tbSom.Value
            Cells(sRng.Row, 17).Value = Me!cbFep.Value
        End If
        Set sRng = Rng.FindNext(sRng)                           '*'
    Loop While Not sRng Is Nothing And sRng.Address <> MyAdd    '*'
End If
Me!tbCode.Value = "":                          Me!tbName.Value = ""
MsgBox "Luu Xong Ròi!", , "GPE.COM Xin Thông Báo!"
Err_:                                           Exit Sub
LoiCT:
    If Err = 13 Then
        MsgBox "GPE.COM Tam Biet!":             Resume Err_
    Else
        MsgBox Err, , Error()
    End If
End Sub]/php]
Em buồn quá vì chưa hiểu hết ý nghĩa các câu lệnh của bác làm cho mình. Nhất định em sẽ tìm hiểu thêm
Cảm ơn rất nhiều vì đã nhiệt tình giúp đỡ em.
Em đã kết thúc file theo ý của mình và giờ thì OK trơn chu rồi. File đính kèm
Close vấn đề của em ở đây.
 

File đính kèm

Upvote 0
Close vấn đề của em ở đây.

Có hơn sớm quá không?
Bạn còn những hơn 24 giờ nữa để cùng diễn đàn thảo luận các vấn đề liên quan đếN file như dưới đây, mà:

(1) Bạn có thể nhờ cộng đồng này diễn dịch ngôn ngữ VBA trong các macro bạn chưa rõ nghĩa

(2) Mình thấy ở trang 'List' có danh mục loại nghỉ fép
Sao bạn không thiết lập thêm danh mục này:
PHP:
'
MÃ   TÊN      ' 
Dn    Dandori
Ht     Heat up,Down
Ks     Kanshi
Kr     Kiriko
Mt     Meeting
Ot     Operator
Or     Other
Rt     Report
ST     Safety training
SI     Scrap+Ingot
Sp     Shipping
Tn     Tonyu
TO     Traning other
TM    Truoble machine
. .       . . . .

. . . . . . . . . . .
 
Upvote 0
Có hơn sớm quá không?
Bạn còn những hơn 24 giờ nữa để cùng diễn đàn thảo luận các vấn đề liên quan đếN file như dưới đây, mà:

(1) Bạn có thể nhờ cộng đồng này diễn dịch ngôn ngữ VBA trong các macro bạn chưa rõ nghĩa
@ChanhTQ@
1.Em bây giờ đang mới biết ghi Marco với lại copy code thôi. Em sợ khi hỏi ở đây sợ làm loãng topic với lại chưa hiểu lắm mà đi hỏi ký cục lắm.

(2) Mình thấy ở trang 'List' có danh mục loại nghỉ fép Sao bạn không thiết lập thêm danh mục này: [/QUOTE đã viết:
2.Phần này là lý do tăng ca nếu đặt code cũng được nhưng em thấy chưa cần thiết. File trên em sửa lại Form trong phần sửa mục Reason thành Combox list rồi. Khi sửa chỉ cần chọn là OK.
 
Upvote 0
Em buồn quá vì chưa hiểu hết ý nghĩa các câu lệnh của bác làm cho mình. Nhất định em sẽ tìm hiểu thêm
Cảm ơn rất nhiều vì đã nhiệt tình giúp đỡ em.
Em đã kết thúc file theo ý của mình và giờ thì OK trơn chu rồi. File đính kèm
Close vấn đề của em ở đây.
Sau khi xem sơ qua File của bạn còn nhiều vấn đề phải làm như sau:
1/ Không nên sử dụng nhiều PivotTable trong 1 sheet nhìn rối mắt, tại sao không cho mỗi nhiệm vụ là 1 nút, muốn nhiệm vụ nào thì nhấn nút nó sẽ tạo PivotTable cho nhiệm vụ đó.
2/ Listbox nên cho nó gọn lại 1 chút để bố trí các Control bên dưới cho to ra sẽ dễ nhìn hơn.
3/ Code nhìn sơ qua còn bị lỗi.
4/ Liên quan đến nghĩ phép thì chưa có thiết kế mẫu giấy phép trên 1 sheet nào đó (lấy dữ liệu từ sheet Data).

Mấy vấn đề tôi nêu chỉ là gợi ý, nếu có phát sinh thì chờ các thành viên khác giúp cho.
 
Upvote 0
Xin góp í với bạn, trước tiên là những cấu trúc dữ liệu trong các trang tính, như sau:
1./ Tên trang tính của bạn gán quá dài & không cần thiết.
Ví dụ thay ví "DS-KHACHHANG", ta nên là 'DSKHg'
1.1./ Trong tên trang tính ta không nên xài "-" mà nên là "_"
2./ Cũng tại trang này, bạn chỉ có mã khách hàng (KH) là 'KH0003'; Như vậy ngầm hiểu bạn có mỗi 1 loại KH là những cá nhân thôi. Bạn có khách hàng là những CQ hai XN (tập thể) hay không?

3./ Ở trang 'DSQua': Nếu là mình thì trường [Code Quà] nên có độ dài là như nhau; Những Code quà nào ngắn ta nên thêm kí tự "_" cho đủ (độ dài)
Trong cột [Code Quà] ta không nên có tiếng Việt có dấu, như 'Đ' hay 'Ă',. . . .
Chuyện này cũng nên áp dụng ở cột [Code NV] của trang 'DSNV', Ta không nên để trong [Code NV' có chứa những '09-VTHỒNG' hay '07_VTĐÀO',. . . .
Cột [Index Code] với mình là thừa, nên bỏ đi là vừa.

4./ Ở trang 'NhapData' ở cột [D:D] nên xài mã nhân viên thay vì tên nhân viên; Vì 1 đơn giản nhất là các trường tương tự fía sau nó như [Code KH] & [Code Quà]. ( Có nghĩa là đang dư trường [Tên NV], cột [D:d] này.)

5./ Khuyến cáo bạn xem xét quy luật tạo mã sau:
PHP:
Mã NV      Họ Tên    '
NTN00  Nguyễn Thị Nguyệt
NTN01  Ngô Thành Nam
PPA00  Phạm Phương Anh
NAT00  Ngô Thị Ánh Tuyết
VBF00  Vũ Thị Bích Đào
JJH00  Hảo
VTH00  Vũ thị Hồng
DCF00  Dương công Định
HFT00  Hoang đạo thuý
NVN00  Nguyễn văn Nam
FTT00  Đào Thị Thắm
TVM00  Trần Văn Minh
PHA00  Phạm Thị Hồng Anh
NJD00  Nguyễn Du
Cảm ơn góp ý của bạn rất nhiều. Thực ra code quà hay code nhân viên mình tạo tự động để bẫy lỗi nhập liệu thôi. Đây là file mình làm cho vk mình nên muốn đơn giản và dễ hiểu nhất. Còn đúng nguyên tắc thì khi nhập dữ liệu ta thường xuất phát từ việc nhập code mới chuẩn đc.
 
Upvote 0
Mình lười tạo userform để nhập liệu vì nó chậm hơn so với thao tác trực tiếp trên bảng tính nên mình tạo userform trực tiếp trên bảng tính NHAPDATA luôn, bạn xem thử xài được không. Hướng dẫn:
Nhập dữ liệu ngày, chọn ô Nội Dung, userform sẽ hiện ra danh sách Nội Dung,nếu danh sách trong listbox ngắn và có sẵn cái bạn cần,bạn dùng phím keydown để chọn nội dung cần nhập liệu,nếu danh sách dài hoặc chưa thấy nội dung bạn cần nhập liệu, bạn nhấn "tab"(hoặc click chuột) để vào textbox, gõ từ khóa cần tra, listbox sẽ hiển thị các nội dung có từ khóa, dùng phím keydown (hoặc click chuột) để chọn nội dung trong listbox,bảng tính sẽ tự động chuyển tới ô bên phải tiếp theo là tên nhân viên, bạn làm tương tự giống ô Nội Dung, và làm vậy cho đến mã khách hàng.
Cảm ơn bạn rất nhiều!
 
Upvote 0
Web KT

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

Back
Top Bottom