Xin AE GPE trợ giúp phần Combo của File Form Nhập Liệu_Test (1 người xem)

Liên hệ QC

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

congatrong82

Thành viên hoạt động
Tham gia
10/6/13
Bài viết
112
Được thích
4
Mình có form nhập dữ liệu, nhưng chưa hoàn chỉnh về Combo Mã ngạch, Combo Hệ số lương và Combo Bậc lương. Mình muốn AE GPE trợ giúp thêm về code như sau:
Các phần đầu đã làm xong, nhưng tới phần chọn ComBo Mã Ngạch lương thì nó hiện hệ số lương tương ứng của Ngạch đó và hiện bậc lương tương ứng với hệ số lương.
VD: Khi chọn Combo Mã ngạch: 15a.203 = có hệ số hưởng là: 2.34 = thì bậc là: 1/9 ...v.v... Dữ liệu được lấy từ thang bảng lương nằm ở Sheet LIST.
Do hết quata nên mình đính kèm đường link Media: [URL=
 
Lần chỉnh sửa cuối:
Lần chỉnh sửa cuối:
bạn tải file đính kèm về xem thử,

mình thêm 2 code:
txtHeSo_Change
txtHeSo_KeyPress (kiểm tra số nhập vào và đổi , thành chấm)

Sao lại có kiểu đó. Tôi nhập vào tọa độ của 4 điểm. Bạn có thể xác định được mặt phẳng đi qua 4 điểm đó không? Thường là không, trừ trường hợp "chó ngáp phải ruồi". 3 điểm đã xác định mặt phẳng Q và điểm thứ 4 có thể không nằm trong Q.

Tương tự ta phải nhập "Ngạch lương" và "Bậc lương" còn "Hệ số" được xác định từ 2 dữ kiện kia. Hoặc phải nhập "Ngạch lương" và "Hệ số" còn "Bậc lương" được xác định từ 2 dữ kiện kia.

Từ "Ngạch lương" xác định được dòng dữ liệu trong sheet LIST. Từ "Bậc lương" ta xác định được cột trong dòng kia, tức ta xác định được ô thỏa "Ngạch lương" và "Bậc lương". Ô bên trái của ô "kia" là "Hệ số" tương ứng với "Ngạch lương" và "Bậc lương"

Tương tự khi nhập "Ngạch lương" và "Hệ số". Ô bên phải ô "kia" là "Bậc lương" tương ứng với "Ngạch lương" và "Hệ số"

Nếu ta chọn nhập "Ngạch lương" và "Bậc lương" thì "Hệ số" sẽ do code và chỉ do code nhập vào Textbox txtHeso (chỉ có giá trị thông tin). Vậy phải khóa txtHeso không cho user nhập gì, tức Locked = TRUE.

Làm gì cũng phải suy nghĩ lô gíc một chút. Nếu người dùng nhập sai thì có phải rách việc không? Vd. với "Ngạch lương" là 15a.203 và "Bậc lương" là 1/9 thì "Hệ số" là 2,34 (cell J4). Thế nếu user nhập/chọn 15a.203, 1/9 và 3,33 thì có phải "méo mặt" không?

Tự dưng lại rước vạ vào thân, thêm việc cho mình (kiểm tra nếu Hệ số không khớp với 2 "vị" kia thì bắt nhập lại).

Hoặc nếu như trong tập tin thì: Chọn "Ngạch lương", tiếp theo nhập "Hệ số" thì code sẽ tự nhập giá trị vào "Bậc lương". Câu hỏi: thế nếu tiếp theo user chọn "Bậc lương" khác thì sao? Thì 3 dữ liệu không khớp nhau. Vậy giá trị nào do code và chỉ do code nhập thì phải "khóa" control. Nếu "Bậc lương" là suy ra từ "Ngạch lương" và "Hệ số" thì tôi đề nghị:
1. Chuyển ComboBox "Bậc lương" thành TextBox với Locked = TRUE
2. Chuyển TextBox "Hệ số" thành ComboBox. ComboBox.
3. Khi user chọn giá trị trong ComboBox "Ngạch lương" thì lúc đó ComboBox "Hệ số" mới có danh sách (phụ thuộc vào "Ngạch lương")
4. Khi user chọn giá trị trong ComboBox "Hệ số" thì code "đập" giá trị vào TextBox "Bậc lương"

Chuyển "Hệ số" thành ComboBox thì user chỉ phải chọn từ danh sách. Như thế là thân thiện với user. Vì gõ thì còn có vấn đề dấu thập phân, gõ nhầm, trí nhớ. Vd. làm sao user nhớ là có "Hệ số" 2,34 chứ không phải là 2,43? Chọn thay gõ cũng có nghĩa là txtHeSo_KeyPress là thừa.
 
bạn tải file đính kèm về xem thử,

mình thêm 2 code:
txtHeSo_Change
txtHeSo_KeyPress (kiểm tra số nhập vào và đổi , thành chấm)
Cảm ơn bạn rất nhiều. Mình test rồi nhưng chưa hợp lý lắm. Theo mình nghỉ làm như Bác Siwtom hướng dẫn.
 
Lần chỉnh sửa cuối:
Cảm ơn bạn đã quan tâm. Mình theo cách của bạn.
1. Chuyển ComboBox "Bậc lương" thành TextBox với Locked = TRUE
2. Chuyển TextBox "Hệ số" thành ComboBox. ComboBox.
3. Khi user chọn giá trị trong ComboBox "Ngạch lương" thì lúc đó ComboBox "Hệ số" mới có danh sách (phụ thuộc vào "Ngạch lương")
4. Khi user chọn giá trị trong ComboBox "Hệ số" thì code "đập" giá trị vào TextBox "Bậc lương"

Chuyển "Hệ số" thành ComboBox thì user chỉ phải chọn từ danh sách. Như thế là thân thiện với user. Vì gõ thì còn có vấn đề dấu thập phân, gõ nhầm, trí nhớ. Vd. làm sao user nhớ là có "Hệ số" 2.34 chứ không phải là 2,43? Chọn thay gõ cũng có nghĩa là txtHeSo_KeyPress là thừa.
Vậy bạn có thể thêm những vấn đề mà bạn giải thích ở trên được không?

Hóa ra bạn có 2 chủ đề song song cùng về 1 vấn đề.
Tôi cũng đọc qua các bài của bạn thì thấy cấu trúc dữ liệu có thay đổi. Lúc trước "bậc lương" (1, 2, ...) và "hệ số" cùng 1 cột vì đơn giản là trong mỗi dòng thì những hệ số liên tiếp sẽ tương ứng với các bậc lương liên tiếp. Bây giờ bậc lương và hệ số là 2 cột riêng biệt.

Bạn hãy nói lần cuối cùng là bạn chọn cấu trúc nào.
Và bạn chỉ ra là lấy tập tin ở bài nào để thao tác. Vì bạn gửi nhiều tập tin nên không biết bây giờ dùng tập tin nào.
 
Lần chỉnh sửa cuối:

1. Code viết bởi nhiều người sẽ không đồng bộ, vậy tôi viết lại toàn bộ code.

2. Tôi không sử dụng các name đã có. Bạn thấy name nào không cần thì xóa

3. Tôi thêm checkbox "Sửa dữ liệu". Ở mỗi thời điểm thì hoặc ta ở chế độ "Thêm dữ liệu" (checkbox "Sửa dữ liệu" không được chọn) hoặc ở chế độ sửa dữ liệu
Để sửa dữ liệu đã có thì: chọn checkbox "Sửa dữ liệu" (vào chế độ sửa) --> muốn sửa dòng nào thì chọn trong ListBox, lúc này nút Sửa mới Enabled và dòng chọn sẽ được nhập vào các control. Khi đã chỉnh sửa thì nhấn nút "Sửa dữ liệu" và dữ liệu sẽ được sửa trên sheet.
Khi ở chế độ "Thêm dữ liệu" thì dữ liệu sẽ được thêm vào dòng tiếp theo trên sheet

4. Khi mở Form thì tôi nhập vào các ô Ngày tháng ngày hiện hành. Như thế để user biết cách nhập ngày tháng, tức ngày, tháng, năm hay năm, tháng, ngay v...v

5. Ở sheet hướng dẫn bạn chỉnh sửa lại cho đúng cách thức thao tác như bây giờ.

6. Quan trọng nhất. Tôi ngại nhất khâu test. Vậy bạn test và nếu cần ta sẽ chỉnh sửa.

http://www.mediafire.com/download/k23hranq9uwzqe8/From+Nhap+Lieu_Test.xls
 
hehe,
mình cũng nghĩ thế (do chưa hiểu thao tác của file đó là ntn - - - ), bạn tải file đính kèm về xem sao nhé !

Cảm ơn bạn, nhưng khi lưu dữ liệu và nhập người kế tiếp thì khì hệ số không load dữ liệu vào được. Vì phần nhập liệu phải bấm nút nhập dữ liệu sheet
 
Lần chỉnh sửa cuối:
Ok cảm ơn bạn rất nhiều. Mình đã test và có chúc vấn đề:
1. Phần ngày tháng năm ở textbox Ngày vào đảng (có 1 số cán bộ chưa vào đảng nên bỏ trống) và textbox Ngày tuyển dụng (có người do chưa tuyển dụng nên bỏ trống). Hai textbox trên không gán lỗi vào là ok.

Trong Private Sub cmdAddNew_Click thay

Mã:
If Not IsDate(DateCtl(index).Value) Then
            bad = True
            Exit For
End If

bằng

Mã:
If Not IsDate(DateCtl(index).Value) Then
            bad = index = 0 Or index = 2
            If Not bad Then bad = DateCtl(index).Value <> ""
            If bad Then Exit For
End If

2. Khi dữ liệu được lưu thì độ cao của row quá lớn.

1. Trong sheet NDL từ dòng 13 trở xuống delete tất cả các dòng hiện có độ cao không bình thường
2. Trong Private Sub cmdAddNew_Click thay
Mã:
Sheets("NDL").Cells(currRow, 1).EntireRow.Insert

bằng

Mã:
Sheets("NDL").Cells(currRow [SIZE=4][COLOR=#ff0000]+ 1[/COLOR][/SIZE], 1).EntireRow.Insert

Tức thêm đỏ đỏ
 
Lần chỉnh sửa cuối:
Mình đã thay code này:
Sheets("NDL").Cells(currRow + 1, 1).EntireRow.Insert
Trường hợp 1: Khi nhập từ dòng thứ 13 thì OK (mình để dòng 13 và 14 có ô, vì khi kết thúc nhập liệu sẽ có 1 dòng làm dòng tổng cộng ở cuối danh sách.
Trường hợp 2: Nhập người thứ 2 thì copy và insert border xuống dưới (xuất hiện dòng trắng).
Nhờ bạn test lại dùm vấn đề trên. Mình cảm ơn bạn nhiều.

Bạn kẻ khung cho tới cả dòng 14
 
Mình đã thử kẻ tới dòng 14. Khi nhập xong sẽ thừa 2 dòng cuối. Bạn test thử xem sao.

Thôi được, tôi tự kẻ khung cho bạn

1. Bạn kẻ khung cho tới dòng 12.
2. Dưới 2 dòng lần trước

Mã:
Sheets("NDL").Cells(currRow + 1, 1).EntireRow.Insert
Sheets("NDL").Cells(currRow, 1).Resize(, 17).Value = MyCtrls

bạn cho thêm 1 dòng

Mã:
Sheets("NDL").Cells(currRow, 1).Resize(, 17).Borders.LineStyle = xlContinuous
 
Mình đã làm theo hướng dẫn của bạn nhưng ý mình muốn sau khi nhập xong khoản 5 người (dòng 13 đến 18) thì Dòng thứ 19 vẫn kẻ khung để làm tổng cộng ở cuối dòng.

Từ dòng 13 đến 18 là đã thêm 6 người chứ không phải 5, bạn ạ.

Tôi làm cho bạn lần cuối.

Cái tổng cộng gì đó thì đặt ở dòng 14. Chắc không phải là "Tổng cộng danh sách có ….. CB-GV-NV"? Vì tôi nhìn thấy cùng dòng có "………………., ngày …. tháng …. năm 2014". Mà cái đó chắc không ai cho vào khung.
--------------
1. tổng cộng gì đó thì đặt ở dòng 14.
2. Kẻ khung cho và chỉ cho vùng A12:Q14. Dòng 13 để trống.
3.

Thay 3 dòng hiện thời
Mã:
Sheets("NDL").Cells(currRow + 1, 1).EntireRow.Insert
Sheets("NDL").Cells(currRow, 1).Resize(, 17).Value = MyCtrls
Sheets("NDL").Cells(currRow, 1).Resize(, 17).Borders.LineStyle = xlContinuous

bằng

Mã:
If currRow > 13 Then Sheets("NDL").Cells(currRow, 1).EntireRow.Insert
Sheets("NDL").Cells(currRow, 1).Resize(, 17).Value = MyCtrls
 
Web KT

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

Back
Top Bottom