Xin hỏi về cách gán sự kiện cho TexBox tìm kiếm.

Liên hệ QC

myhoanmy

Thành viên mới
Tham gia
2/11/16
Bài viết
14
Được thích
3
Chào các anh chị!
Mình đang viết một chương trình mini để điểm danh thiếu nhi đi lễ, học giáo lý. Trong Form, mình dùng TextBox1 để tìm kiếm từ cột 1 (cột ID) của sheet "data", mình muốn khi "enter" trong texbox tìm kiếm thì trong listbox sẽ hiện ra row đó, đồng thời các textbox tương ứng cũng hiện ra dữ liệu đã tìm. Sau đó dữ liệu lưu vào sheet khác. Mình bị vướng chổ dữ liệu trong Listbox tự đưa vào các textBox. Vì có dùng kèm Mã vạch và điểm danh liên tục hơn 1 nghìn em, mình cần chỉ enter texbox là trở lại tìm tiếp, không dùng command button. Mong các anh chị giúp đỡ hoặc gợi ý code. Mình gửi kèm file, phần hỏi trong sheet"Diemdanh" và UserForm1. Xin cảm ơn mọi người.
 

File đính kèm

Lớn tuổi rồi mà phải ráng học để không lạc hậu, nhưng giới hạn về kiến thức và khả năng, VBA cuốn hút nhưng không dễ hút nó vào trí. hi..đúng là lực bất tòng tâm.
 
Upvote 0
Bạn không chắc lớn tuổi hơn mình (!)
Mình xin góp ý với bạn vài điều vế thiết kế trang dữ liệu của bạn:
Trước tiên là mã ID cho các học viên; Bạn gán là '00 000 001' cho HV đầu tiên; Điều này có nghĩa là số HV tối đa có thể là 10 triệu
Tuy nhiêu trong Excel mình khuyên bạn ta nên xài ID bắt đầu từ 10000000 trở đi; Còn là mình mình sẽ chỉ là ABC00 là đủ cho 100 triệu người rồi!
Kí tự 'A' trong dẫy đó ta có thể ghi thay vô đó 26 kí tự trong bảng chữ cái;
Còn từ ký tự thứ hai thì ta có thể thay bỡi 35 kí tự hay kí số khác cho nó
Nói thêm cho rõ: 2 kí tư '00' cuối ta có thể tạo ra tổ hợp hơn ngàn (36 x 36) mã thay vì 100 mã như của bạn

Cũng là nêu thêm để bạn hiểu: Nếu là mình thì mã tạo ra có tình tương tác cao như sau:

H TênDviMã TBSố luongTtien
NVH00Ngô Vũ HàBGHQP1
450000​
NVH01Ngô Viết HàPKHQSBT2
40000​
DJF00Dương ĐốngVP_Gy3
258500​
NVH02Nhữ Thị Việt HồngKQSCBT4
45000​
HVN00Hồ Thị Vũ NgaTTGDQPDp5
50100​
CVA00Cỗ Văn ẨnBQNDL6
54200​
NJD00Nguyễn DungBQYCh7
450000​
NVH03Ngô Vũ HảiBSDHQP8
40000​
NVH01Ngô Viết HàBTCDL9
258500​
DJF00Dương ĐốngBXAM10
45000​
NVH02Nhữ Thị Việt HồngD1_Ao11
50100​
HVN01Hồ Thị Vũ NgânD10AX12
54200​
CVA00Cỗ Văn ẨnD11BL11
58300​
CVA01Cỗ Văn AnhD12BT10
62400​
LKD00Lê Kim DungD13Cr9
66500​
LMD00Lê Minh DungD15DL8
70600​
LMD01Lê Minh DùngD16Dp7
74700​
LMD02Lê Minh DũngD17Gy6
78800​
LMD03Lê Minh DụngD18Kp5
82900​
LJD00Lê DươngD19Mn4
87000​
LJF00Lê ĐôngD2_Mu3
91100​
LJF01Lê ĐồngD20Qn2
95200​
LJF02Lê ĐốngH73RC1
99300​
LJF03Lê ĐộngKBCTL3
103400​
LJF04Lê ĐổngKBPVC5
107500​
FFD00Đỗ Đức DươngKBSCr7
66500​
FFD01Đỗ Đức DưỡngKCTDL9
70600​
FFD02Đỗ Đức DưKCTDDp11
74700​
FFD03Đỗ Đức DưKCTDDp13
78800​

Với mình, ciệc tạo mã là cái xương sống của 1 CSDL
& mình sẵn lòng giúp bạn tạo mã như ý mình cho danh sách triệu người chỉ sau dưới 10 phút bạn gởi tới mình!

Tạm chỉ là thế, rất vui nếu được trao đổi tiếp cùng bạn!
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn không chắc lớn tuổi hơn mình (!)
Mình xin góp ý với bạn vài điều vế thiết kế trang dữ liệu của bạn:
Trước tiên là mã ID cho các học viên; Bạn gán là '00 000 001' cho HV đầu tiên; Điều này có nghĩa là số HV tối đa có thể là 10 triệu
Tuy nhiêu trong Excel mình khuyên bạn ta nên xài ID bắt đầu từ 10000000 trở đi; Còn là mình mình sẽ chỉ là ABC00 là đủ cho 100 triệu người rồi!
Kí tự 'A' trong dẫy đó ta có thể ghi thay vô đó 26 kí tự trong bảng chữ cái;
Còn từ ký tự thứ hai thì ta có thể thay bỡi 35 kí tự hay kí số khác cho nó
Nói thêm cho rõ: 2 kí tư '00' cuối ta có thể tạo ra tổ hợp hơn ngàn (36 x 36) mã thay vì 100 mã như của bạn

Cũng là nêu thêm để bạn hiểu: Nếu là mình thì mã tạo ra có tình tương tác cao như sau:

H TênDviMã TBSố luongTtien
NVH00Ngô Vũ HàBGHQP1
450000​
NVH01Ngô Viết HàPKHQSBT2
40000​
DJF00Dương ĐốngVP_Gy3
258500​
NVH02Nhữ Thị Việt HồngKQSCBT4
45000​
HVN00Hồ Thị Vũ NgaTTGDQPDp5
50100​
CVA00Cỗ Văn ẨnBQNDL6
54200​
NJD00Nguyễn DungBQYCh7
450000​
NVH03Ngô Vũ HảiBSDHQP8
40000​
NVH01Ngô Viết HàBTCDL9
258500​
DJF00Dương ĐốngBXAM10
45000​
NVH02Nhữ Thị Việt HồngD1_Ao11
50100​
HVN01Hồ Thị Vũ NgânD10AX12
54200​
CVA00Cỗ Văn ẨnD11BL11
58300​
CVA01Cỗ Văn AnhD12BT10
62400​
LKD00Lê Kim DungD13Cr9
66500​
LMD00Lê Minh DungD15DL8
70600​
LMD01Lê Minh DùngD16Dp7
74700​
LMD02Lê Minh DũngD17Gy6
78800​
LMD03Lê Minh DụngD18Kp5
82900​
LJD00Lê DươngD19Mn4
87000​
LJF00Lê ĐôngD2_Mu3
91100​
LJF01Lê ĐồngD20Qn2
95200​
LJF02Lê ĐốngH73RC1
99300​
LJF03Lê ĐộngKBCTL3
103400​
LJF04Lê ĐổngKBPVC5
107500​
FFD00Đỗ Đức DươngKBSCr7
66500​
FFD01Đỗ Đức DưỡngKCTDL9
70600​
FFD02Đỗ Đức DưKCTDDp11
74700​
FFD03Đỗ Đức DưKCTDDp13
78800​

Với mình, ciệc tạo mã là cái xương sống của 1 CSDL
& mình sẵn lòng giúp bạn tạo mã như ý mình cho danh sách triệu người chỉ sau dưới 10 phút bạn gởi tới mình!

Tạm chỉ là thế, rất vui nếu được trao đổi tiếp cùng bạn!
Bạn không chắc lớn tuổi hơn mình (!)
Mình xin góp ý với bạn vài điều vế thiết kế trang dữ liệu của bạn:
Trước tiên là mã ID cho các học viên; Bạn gán là '00 000 001' cho HV đầu tiên; Điều này có nghĩa là số HV tối đa có thể là 10 triệu
Tuy nhiêu trong Excel mình khuyên bạn ta nên xài ID bắt đầu từ 10000000 trở đi; Còn là mình mình sẽ chỉ là ABC00 là đủ cho 100 triệu người rồi!
Kí tự 'A' trong dẫy đó ta có thể ghi thay vô đó 26 kí tự trong bảng chữ cái;
Còn từ ký tự thứ hai thì ta có thể thay bỡi 35 kí tự hay kí số khác cho nó
Nói thêm cho rõ: 2 kí tư '00' cuối ta có thể tạo ra tổ hợp hơn ngàn (36 x 36) mã thay vì 100 mã như của bạn

Cũng là nêu thêm để bạn hiểu: Nếu là mình thì mã tạo ra có tình tương tác cao như sau:

H TênDviMã TBSố luongTtien
NVH00Ngô Vũ HàBGHQP1
450000​
NVH01Ngô Viết HàPKHQSBT2
40000​
DJF00Dương ĐốngVP_Gy3
258500​
NVH02Nhữ Thị Việt HồngKQSCBT4
45000​
HVN00Hồ Thị Vũ NgaTTGDQPDp5
50100​
CVA00Cỗ Văn ẨnBQNDL6
54200​
NJD00Nguyễn DungBQYCh7
450000​
NVH03Ngô Vũ HảiBSDHQP8
40000​
NVH01Ngô Viết HàBTCDL9
258500​
DJF00Dương ĐốngBXAM10
45000​
NVH02Nhữ Thị Việt HồngD1_Ao11
50100​
HVN01Hồ Thị Vũ NgânD10AX12
54200​
CVA00Cỗ Văn ẨnD11BL11
58300​
CVA01Cỗ Văn AnhD12BT10
62400​
LKD00Lê Kim DungD13Cr9
66500​
LMD00Lê Minh DungD15DL8
70600​
LMD01Lê Minh DùngD16Dp7
74700​
LMD02Lê Minh DũngD17Gy6
78800​
LMD03Lê Minh DụngD18Kp5
82900​
LJD00Lê DươngD19Mn4
87000​
LJF00Lê ĐôngD2_Mu3
91100​
LJF01Lê ĐồngD20Qn2
95200​
LJF02Lê ĐốngH73RC1
99300​
LJF03Lê ĐộngKBCTL3
103400​
LJF04Lê ĐổngKBPVC5
107500​
FFD00Đỗ Đức DươngKBSCr7
66500​
FFD01Đỗ Đức DưỡngKCTDL9
70600​
FFD02Đỗ Đức DưKCTDDp11
74700​
FFD03Đỗ Đức DưKCTDDp13
78800​

Với mình, ciệc tạo mã là cái xương sống của 1 CSDL
& mình sẵn lòng giúp bạn tạo mã như ý mình cho danh sách triệu người chỉ sau dưới 10 phút bạn gởi tới mình!

Tạm chỉ là thế, rất vui nếu được trao đổi tiếp cùng bạn!
Rất cảm ơn lời góp ý khoa học của anh. Mình sẽ xem lại vấn đề ID. Mỗi em là một ID suốt quá trình 11 năm giáo lý. Do mình lấy ID mã vạch cũ của các em đưa vào và không nghĩ đến vấn đề anh nêu. Rất cảm ơn anh.
 
Upvote 0
Bạn không chắc lớn tuổi hơn mình (!)
Mình xin góp ý với bạn vài điều vế thiết kế trang dữ liệu của bạn:
Trước tiên là mã ID cho các học viên; Bạn gán là '00 000 001' cho HV đầu tiên; Điều này có nghĩa là số HV tối đa có thể là 10 triệu
Tuy nhiêu trong Excel mình khuyên bạn ta nên xài ID bắt đầu từ 10000000 trở đi; Còn là mình mình sẽ chỉ là ABC00 là đủ cho 100 triệu người rồi!
Kí tự 'A' trong dẫy đó ta có thể ghi thay vô đó 26 kí tự trong bảng chữ cái;
Còn từ ký tự thứ hai thì ta có thể thay bỡi 35 kí tự hay kí số khác cho nó
Nói thêm cho rõ: 2 kí tư '00' cuối ta có thể tạo ra tổ hợp hơn ngàn (36 x 36) mã thay vì 100 mã như của bạn

Cũng là nêu thêm để bạn hiểu: Nếu là mình thì mã tạo ra có tình tương tác cao như sau:

H TênDviMã TBSố luongTtien
NVH00Ngô Vũ HàBGHQP1
450000​
NVH01Ngô Viết HàPKHQSBT2
40000​
DJF00Dương ĐốngVP_Gy3
258500​
NVH02Nhữ Thị Việt HồngKQSCBT4
45000​
HVN00Hồ Thị Vũ NgaTTGDQPDp5
50100​
CVA00Cỗ Văn ẨnBQNDL6
54200​
NJD00Nguyễn DungBQYCh7
450000​
NVH03Ngô Vũ HảiBSDHQP8
40000​
NVH01Ngô Viết HàBTCDL9
258500​
DJF00Dương ĐốngBXAM10
45000​
NVH02Nhữ Thị Việt HồngD1_Ao11
50100​
HVN01Hồ Thị Vũ NgânD10AX12
54200​
CVA00Cỗ Văn ẨnD11BL11
58300​
CVA01Cỗ Văn AnhD12BT10
62400​
LKD00Lê Kim DungD13Cr9
66500​
LMD00Lê Minh DungD15DL8
70600​
LMD01Lê Minh DùngD16Dp7
74700​
LMD02Lê Minh DũngD17Gy6
78800​
LMD03Lê Minh DụngD18Kp5
82900​
LJD00Lê DươngD19Mn4
87000​
LJF00Lê ĐôngD2_Mu3
91100​
LJF01Lê ĐồngD20Qn2
95200​
LJF02Lê ĐốngH73RC1
99300​
LJF03Lê ĐộngKBCTL3
103400​
LJF04Lê ĐổngKBPVC5
107500​
FFD00Đỗ Đức DươngKBSCr7
66500​
FFD01Đỗ Đức DưỡngKCTDL9
70600​
FFD02Đỗ Đức DưKCTDDp11
74700​
FFD03Đỗ Đức DưKCTDDp13
78800​

Với mình, ciệc tạo mã là cái xương sống của 1 CSDL
& mình sẵn lòng giúp bạn tạo mã như ý mình cho danh sách triệu người chỉ sau dưới 10 phút bạn gởi tới mình!

Tạm chỉ là thế, rất vui nếu được trao đổi tiếp cùng bạn!
Quả thật khác biệt,. mình thay ID bằng 3 ký hiệu lớp và 3 số (vd: KTAM001,..TS007, RL012,.) và dữ liệu đọc nhanh hơn. trong file trên mình đã viết được khi TexBox tìm được thì hiện trong ListBox và row trong ListBox cũng được chọn, anh gợi ý dùm cách nào cho Button "Chỉnh sửa" tự load row đã được chọn trong ListBox vào Sheet không? vì mình cũng tự tạo mã vạch để quyét vào TexBox tìm kiếm,nên các thao tác button cần bỏ hết khi điểm danh.
 
Upvote 0
Trên ListBox ta không thể sửa chữa hay xóa dữ liệu, theo mình hiểu là vậy.
Thường mình làm vầy, khi muốn sửa DL của 1 HV trong 1 lớp:
1./ Cho danh sách lớp hiện lên trên ListBox
2./ Nhấp chuột lên dòng nào của ListBox thì dữ liệu sẽ vô các TextBox tương ưng
3,. Tiến hành sửa trên vài TextBox cần thiết
4./ Nhấp chuột vô nút lưu; Khi đó
Macro sẽ tìm đến ID của HV đó & lưu những gì trên các TextBox lên trang tính cho HV đó
Đó là chu trình bình thường; Giờ bạn muốn bỏ nút lệnh thì làm sao?

Nói thêm về ID của bạn: ID là không thể thay đổi trong mọi trường hợp
Nhưng thực tế thì HV có thể chuyển từ lớp này sang lớp khác do nhiều nguyên nhân vậy sẽ không ổn lắm khi vận hành CSDL
 
Upvote 0
Trên ListBox ta không thể sửa chữa hay xóa dữ liệu, theo mình hiểu là vậy.
Thường mình làm vầy, khi muốn sửa DL của 1 HV trong 1 lớp:
1./ Cho danh sách lớp hiện lên trên ListBox
2./ Nhấp chuột lên dòng nào của ListBox thì dữ liệu sẽ vô các TextBox tương ưng
3,. Tiến hành sửa trên vài TextBox cần thiết
4./ Nhấp chuột vô nút lưu; Khi đó
Macro sẽ tìm đến ID của HV đó & lưu những gì trên các TextBox lên trang tính cho HV đó
Đó là chu trình bình thường; Giờ bạn muốn bỏ nút lệnh thì làm sao?

Nói thêm về ID của bạn: ID là không thể thay đổi trong mọi trường hợp
Nhưng thực tế thì HV có thể chuyển từ lớp này sang lớp khác do nhiều nguyên nhân vậy sẽ không ổn lắm khi vận hành CSDL
Đúng vậy, nhưng mình có suy nghĩ phải chịu khó sửa mã ID trong trường hợp này. Phải dùng ký tự mới tăng tốc, sẽ thay đổi ký tự mỗi năm khi chuyển lớp(trong data), số vẫn giữ. Mình không biết viết code sao cho tốc độ tìm nhanh nên phải dùng ký tự., để thử xem từ 10 nghìn như anh gợi ý xem. Còn sửa trên Texbox, thật ra rất hiếm khi sửa. Do khi điểm danh sẽ dùng máy quet mã vạch, ID xẽ nhảy vào texbox tìm., chỉ gõ texbox khi em đó quên mang vở có dán tem mã vạch. Vừa quyet mã xong lại phải nhấn button thì không thể kịp và không được chuyên. nôm na như siêu thị họ quét giá tiền vậy. Mình nghĩ có thể dùng lệnh sự kiện xãy ra sau khi enter trong texbox,. nhưng không biết phải viết thế nào, tìm mãi không thấy có trên này.
Bài đã được tự động gộp:

Trên ListBox ta không thể sửa chữa hay xóa dữ liệu, theo mình hiểu là vậy.
Thường mình làm vầy, khi muốn sửa DL của 1 HV trong 1 lớp:
1./ Cho danh sách lớp hiện lên trên ListBox
2./ Nhấp chuột lên dòng nào của ListBox thì dữ liệu sẽ vô các TextBox tương ưng
3,. Tiến hành sửa trên vài TextBox cần thiết
4./ Nhấp chuột vô nút lưu; Khi đó
Macro sẽ tìm đến ID của HV đó & lưu những gì trên các TextBox lên trang tính cho HV đó
Đó là chu trình bình thường; Giờ bạn muốn bỏ nút lệnh thì làm sao?

Nói thêm về ID của bạn: ID là không thể thay đổi trong mọi trường hợp
Nhưng thực tế thì HV có thể chuyển từ lớp này sang lớp khác do nhiều nguyên nhân vậy sẽ không ổn lắm khi vận hành CSDL
Do mỗi năm phải in lại tem mã vạch, tiện đó sửa luôn ID vì trên tem có ghi tên, lớp.. vd: "RL2A01-Maria Hương".. phải làm vậy mỗi năm để khi nhìn tem là biết ngay em đó lớp nào.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình mường tượng vấn đề của bạn là điểm danh HV bằng 2 cách:
(1) Quét mã Code là coi như xong cho những HV có đem vỡ (có mã Code)
(2) Nhập mã của HV; Nhưng ở đây phát sinh ra chuyện là mã này ai nhớ? Cả Thầy lẫn trò đều khó mà nhớ được?
???
Bài đã được tự động gộp:

Do mỗi năm phải in lại tem mã vạch, tiện đó sửa luôn ID vì trên tem có ghi tên, lớp.. vd: "RL2A01-Maria Hương".. phải làm vậy mỗi năm để khi nhìn tem là biết ngay em đó lớp nào.
Vậy HV nếu không đem theo nhãn vỡ thì khai báo tên lớp hay gì, gì khác?
Lúc này ta phải tìm HV theo danh sách 1 lớp?
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã dự liệu trường hợp này. Tại nơi điểm danh có để một laptop có form tìm kiếm theo tên,, lớp,.. để nhập khi cần thiết. Tỉ lệ quên vở hiếm nên không ngại chậm trễ cho các em khác xếp hàng chờ. Cũng có thêm ý tưởng đưa ds tra tìm và quét mã vạch vào điện thoại giáo lý viên trực máy. Hiện tại không ngồi máy tính nên không gửi anh xem được File đã gửi trước đó có làm thêm. Mình đã viết được sau khi enter trong textbox tìm, dữ liệu hiện lên listbox, hiện trong texbox, tự lưu vào sheet đã chọn,. Còn một vấn đề là cho dấu nháy về lại textbox tìm kiếm, mình thử setforcus nhưng không được.
 
Upvote 0
Web KT

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

Back
Top Bottom