Sinh Mã tự động và gán giá trị các nút

Liên hệ QC

gatre2005

Thành viên mới
Tham gia
26/12/09
Bài viết
16
Được thích
3
Em không hiểu về VBA đọc các bài của các bác em cũng chắp nhặt được một chút kiến thức và làm được một userform như sau:
Tuy nhiên làm đến đây em bị tắc. và mong các bác chỉ giáo thêm cho, em có một số thắc mắc như này.

1. Tạo mã: em tạo mã tự động ở cell: nguyên tắc lấy 2 chữ số đầu của Nước đến + 2 số cuối năm sinh của lao động + số thứ tự VD: DL7601
Tuy nhiên em thấy sẽ phát sinh nếu người đó không đi nữa mà em xoá dòng của người đó đi thì toàn bộ những người sau nhảy lên thì mã cũng thay đổi: ---> vậy phải làm như thế nào để mã số đó cố định khi có xoá bỏ người không tham gia nữa.
2. Em cũng đọc phần gọi địa chỉ tỉnh thành huyện của các bác nhưng sao em không thể làm được: trong define name: em thấy các bác đặt là =setting(a$2:a$6399) em cũng đặt thế mà tình cũng không lên mà huyện cũng không lên.nếu define name = code(...) thì chỉ lên có tỉnh thôi.
3. Em muốn khi nhập liệu vào form không cần đánh mã số vào mà vẫn tự động nhận mã như em quy định thì có được không? em chỉ sử dụng combo ma để sửa và cập nhật thông tin những người cũ thôi. mà em không biết cách khi lọc lấy mã cũ thì các thông số sẽ hiển thị lên các combo khác như thế nào.
4. Nhờ các bác giúp em chỉ cách tạo code cho cmd "sửa" và cmd "tạo mới với
Kiến thức của em về VBA = 0 hiện này mới đang tìm hiểu và chỉ có "Ctrl C" và "Ctrl +V" thôi mong các bác giúp đỡ chỉ giáo em với,
em có tham gia gửi vào mấy Box khác những không thấy có ai trả lời cả, mạo muội lập box này mong nhận được ý kiến đóng góp của các bác
Trân thành cám ơn các bác
 
Em cũng chắp nhặt được một chút kiến thức và làm được một userform;
Tuy nhiên làm đến đây em bị tắc. và mong các bác chỉ giáo thêm cho, em có một số thắc mắc như này.
(1). Tạo mã: em tạo mã tự động ở cell: nguyên tắc lấy 2 chữ số đầu của Nước đến + 2 số cuối năm sinh của lao động + số thứ tự VD: DL7601
Tuy nhiên em thấy sẽ phát sinh nếu người đó không đi nữa mà em xoá dòng của người đó đi thì toàn bộ những người sau nhảy lên thì mã cũng thay đổi: ---> vậy phải làm như thế nào để mã số đó cố định khi có xoá bỏ người không tham gia nữa.
(2). Em cũng đọc phần gọi địa chỉ tỉnh thành huyện của các bác nhưng sao em không thể làm được: trong define name: em thấy các bác đặt là =setting(a$2:a$6399) em cũng đặt thế mà tình cũng không lên mà huyện cũng không lên.nếu define name = code(...) thì chỉ lên có tỉnh thôi.
(3). Em muốn khi nhập liệu vào form không cần đánh mã số vào mà vẫn tự động nhận mã như em quy định thì có được không? em chỉ sử dụng combo ma để sửa và cập nhật thông tin những người cũ thôi. mà em không biết cách khi lọc lấy mã cũ thì các thông số sẽ hiển thị lên các combo khác như thế nào.
(4). Nhờ các bác giúp em chỉ cách tạo code cho cmd "sửa" và cmd "tạo mới với
Kiến thức của em về VBA = 0 hiện này mới đang tìm hiểu và chỉ có "Ctrl C" và "Ctrl +V" thôi mong các bác giúp đỡ chỉ giáo em với,
(1) Thay vì bạn lấy 2 số cuối của năm sinh NLĐ, sao bạn không chuyển dùng 3 ký tự (cả ký số) để biểu thị ngày đi; Có vậy mã số của bạn sẽ tăng dài dài. Lúc đó bạn có thể rung đùi mà xài hàm MAX() trong excel như là 1 trợ thủ đắc lực;
Mình xin nói rõ hơn về 3 kí tự này:
Ký tự đầu biểu thị năm, ví dụ A cho năm 2010, B cho năm 2011,. . . . . (Vậy là ta có thể xài 26 năm chương trình này)
Ký tự thứ 2 chỉ số tháng, như 1,2,3,. . . ,9, A,B & C (tháng 12)
Còn ký tự thứ 3 chỉ ngày, như
Ngày|1|2|. . . .|9 |10|11|. . . . |30|31
Mã|1|2|. . . . |9|A|B|. . . . |U|V
Ông bà ta nói: "Khéo ăn thì no, khéo co thì ấm" cũng sẽ đúng nếu kỹ lưỡng thêm tẹo, bạn có thể dùng mã này cho 108 năm chứ không chơi. (Bạn suy nghĩ tiếp mxem sao nha)

(2) Chưa hiểu hết í bạn; Nhưng mình đã thấy bài tìm bằng 3 combobox để từ mã tỉnh ra đến mã xã cụ thể của tỉnh đó luôn. (Hình như từ khoá để tìm là 'Cà mau' hay 'Bạc liêu' chi đó.)

(3) Hoàn toàn được với hàm tự tạo;
Hàm này lần lượt làm các việc sau:
Tìm mã đang là lớn nhứt trong danh sách mã; Như đã đề cập bên trên, mã có cùng độ dài là 8 kí tự (2 ký tự đầu là mã tên nước của bạn áp đặt; 3 ký tự tiếp là ngày tháng năm ra đi & 3 ký số cuối là số thứ tự tăng dần trong ngày
(Sẽ cụ thể thêm, nếu bạn đồng í về nguyên tắc)

(4) Bạn tìm thêm trong BOX VBA làm việc với các đối tượng,. . . . http://www.giaiphapexcel.com/forum/forumdisplay.php?79-Lập-Trình-với-Excel :
Các bài viết liên quan tới điều khiển, Window/userform, các điều khiển trên Form và trên Workbook, Worksheet,...


Thân ái!
 
Upvote 0
Xin cám ơn bác về những chỉ dẫn và đóng góp ý kiến rõ ràng: về thuật ngữ quy định đánh mã em muốn xây dựng làm sao cho người tìm dễ hiểu, vì những người làm trực tiếp có thể nhớ những những người mới vào làm thì không thế biết được:
nên em quy định đặt mã như này các bác xem có thể góp ý được không
- ten nước đi: Đài loan: DL
- Nganh nghề: W ( Thợ hàn)
- số CMT : 3 số đầu ---> Có thể nhìn vào biết được lao động đó quê ở đâu (031.55778) --> Hải phòng
- Năm Xuất cảnh: ---> Biết được lao động bay năm nào từ đó có thể tra hồ sơ cả trên file mềm và file giấy
- Số thứ tự: --> Số này tự sinh
Mã số sẽ tự động cập nhập các thông tin trên để hiển thị
VD: DLW031.201.11---> Nhìn mã này ta có thể hiểu lao động là thợ hàn đi ĐÀI LOAN quê ở HẢI PHÒNG là người thứ 201 xuất cảnh và đi năm 2011
Nếu đặt như thế này thì em có thể nhận biết được nếu mã số nào không có 2 ký tự cuối có nghĩa là người này không đi nữa, hoặc đang chờ xuất cảnh vì thế mình sẽ quan tâm hơn đến họ.
Trình độ của em mới chỉ làm hàm tự sinh trong cell chứ chưa biết làm trong VBA ( cũng đã đọc mấy bài về mã số nhưng chưa hiểu về max lắm.
2. về việc lọc mã huyện từ tỉnh Thì các bác trong GPE đã đặt rowsoure cho TINH = define name: "TINH" Những trong đó công thức lại là =setting"a$2:a$649$" chứ không phải bằng công thức = code"....." . bởi vậy mới nói em để là setting thì không được nhưng để code lại được.
- em không hiểu đoạn mà tạo vùng cho HUYEN như thế nào em làm ý thế mà không ra
PHP:
Private Sub Tinh_Change()
  Dim CountItem As Long, RngAdd As String
  Huyen.RowSource = ""
  With Range(Sheet3.[A2], Sheet3.[A65536].End(xlUp))
    CountItem = WorksheetFunction.CountIf(.Cells, Tinh)
    If CountItem Then
      RngAdd = "'" & .Parent.Name & "'!" & .Offset(WorksheetFunction.Match(Tinh, .Cells, 0) - 1, 1).Resize(CountItem).Address
      Huyen.RowSource = RngAdd
    End If
  End With
End Sub
Về các nút lệnh em sẽ nghiên cứu học hỏi tiếp từ các bác.
(mà file của em xây dựng nó có một tí dự liệu và code coppy thôi sao nặng thế gần 2.00M nén zip lại rồi còn 1,3m không tài nào attached lên được:) để các bác xem chỉ rõ thêm hộ em.
 
Upvote 0
. . .em quy định đặt mã như này các bác xem có thể góp ý được không
- ten nước đi: Đài loan: DL
- Nganh nghề: W ( Thợ hàn)
- số CMT : 3 số đầu ---> Có thể nhìn vào biết được lao động đó quê ở đâu (031.55778) --> Hải phòng
- Năm Xuất cảnh: ---> Biết được lao động bay năm nào từ đó có thể tra hồ sơ cả trên file mềm và file giấy
- Số thứ tự: --> Số này tự sinh
Mã số sẽ tự động cập nhập các thông tin trên để hiển thị
VD: DLW031.201.11---> Nhìn mã này ta có thể hiểu lao động là thợ hàn đi ĐÀI LOAN quê ở HẢI PHÒNG là người thứ 201 xuất cảnh và đi năm 2011
Nếu đặt như thế này thì em có thể nhận biết được nếu mã số nào không có 2 ký tự cuối có nghĩa là người này không đi nữa, hoặc đang chờ xuất cảnh vì thế mình sẽ quan tâm hơn đến họ.
Một số lưu ý, mong bạn tham khảo cho vui:

(1) Tên nước theo thông lệ quốc tế, người ta biểu thị bằng 3 ký tự, như VIE là Việt nam

(2) Ngành nghề như bạn làm thì chỉ được 36 nghề thôi (gồm 10 ký số & 26 ký tự); Nên là 2 ký tự để ngừa fát sinh sau này.

(3) Không nên lấy 3 số đầu của chứng minh, vì xưa là Hậu giang, giờ tách ra làm 4 tỉnh rồi; Nên lấy theo biển số xe các tỉnh & tham khảo thêm tại đây: http://www.giaiphapexcel.com/forum/showthread.php?36643-Tìm-giá-trị-dân-số-theo-tỉnh-huyện-xã/page2 (nhất là 2 bài cuối)

(4) & (5) Năm xuất cảnh chỉ nên là 1 ký tự;
Nhưng như bạn số TT chỉ là 3 con số vậy có nghĩa là mỗi năm sẽ chỉ giải quyết cho 1.000 trường hợp đi hợp tác lao động thôi sao? Nếu nhiều hơn thì bạn sẽ ứng fó bằng cách nào?; Hay ở đây nên là: 000 cho người đi đầu tiên trong năm & lúc đó ta có thể gán cho đến người thứ Z99 (vị chi 3.600 người)
Trình độ của em mới chỉ làm hàm tự sinh trong cell chứ chưa biết làm trong VBA ( cũng đã đọc mấy bài về mã số nhưng chưa hiểu về max lắm.
Nếu làm như fấn trên hay của bạn đề xuất, thì ta không thể xài hàm MAX() trong excel để hỗ trợ được rồi.


Tham khảo bài đã dẫn
 
Upvote 0
Cám ơn bác đã cho ý kiến em sẽ tiếp thu:
- về tên nước em đồng ý với bác lấy 3 ký tự đầu (trước đây em muốn đắt thế cho mấy cô lưu trữ hồ sơ dễ đọc, với hơn nữa coppy được cái công thức của người khác lên cũng để nguyên.
-Về ngành nghề thì em cũng đang phân vân. vì ở nhà thì mình dùng tiếng viết gửi CV sang bên kia họ lại dùng tiếng anh. cho nên bác nói hoàn toàn hợp lý
- Về biển số xe thì nó rất khó nhớ cho anh em trong cơ quan vì không phải ai cũng nhớ hêt được còn CMT thì họ làm hàng ngày lên họ cũng nhớ được.
Em có thể đưa formula từ cell B2 vào VBA không ah.
Các bác giúp em việc lọc dữ liệu để sửa với ah.
 
Upvote 0
Các bác ơi cho em hỏi hôm qua em làm xong được các nút lệnh và sắp xếp cách đặt mã rồi. và em tạo và viết lệnh cho nút sửa rồi. mà không hiểu sao sau khi đóng lại em đã save rồi sau đó lại mở ra thì toàn bộ Form và code , manu mất sạch. WO báo là VBA không tương thích là sao hả các bác
 
Upvote 0
mong các bác bớt chút thời gian giúp em tạo mã trong VBA với

Em muốn tạo mã sinh tự động trong form mà:
- ở ô textbox1 nó tự nhảy cho người mới người xem không thể sửa được
- Nếu ta có xoá bất kỳ dữ liệu của một người nào đi thì ở một dòng bất kỳ thì mã số của người kế tiếp cũng không bị thay đổi (theo số thứ tự) hoặc có trùng phải báo là đã có .
- Các bác hướng dẫn hoặc giúp em viết code cho nút lệnh sủa và "next & back' với ạh
 
Upvote 0
Web KT
Back
Top Bottom