Windows Form Làm thế nào để định vị cột và dòng nhập dữ liệu (1 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

binhtv69

Thành viên mới
Tham gia
9/5/21
Bài viết
2
Được thích
0
Chào các bác
Hiện tại mình cần nhập dữ liệu theo yêu cầu của Sếp
Sếp đưa cho1 sấp tài liệu nhiều quá mình không thể nhập tay hết được, nên mình có tìm hiểu VBA nó giúp mình làm lẹ hơn, nhưng mình mới tìm hiểu nên không rành
mong bro giúp mình viết code định vị để mình nhập dữ liệu cho nhanh với
Ví dụ Trường Dãy H, mình nhập 5 ; TT mình nhập 6, Ký tự nhập 100 thì tự động nó nhập 100 vào phần khoanh đỏ.
Mong được sự giúp đở của các bác.
Em xin cám ơn

hop.jpg
 

File đính kèm

Chào các bác
Hiện tại mình cần nhập dữ liệu theo yêu cầu của Sếp
Sếp đưa cho1 sấp tài liệu nhiều quá mình không thể nhập tay hết được, nên mình có tìm hiểu VBA nó giúp mình làm lẹ hơn, nhưng mình mới tìm hiểu nên không rành
mong bro giúp mình viết code định vị để mình nhập dữ liệu cho nhanh với
Ví dụ Trường Dãy H, mình nhập 5 ; TT mình nhập 6, Ký tự nhập 100 thì tự động nó nhập 100 vào phần khoanh đỏ.
Mong được sự giúp đở của các bác.
Em xin cám ơn

View attachment 305791
Làm như thế này thì còn lâu hơn nhập thẳng vào ô.
 
Upvote 0
Không phải bạn, Vì sếp gửi cả sấp tài liệu như dưới, nó không tuần tự, nên mình mới cần VBA như trên

1732242339820.png
 
Upvote 0
Chào các bác
Hiện tại mình cần nhập dữ liệu theo yêu cầu của Sếp
Sếp đưa cho1 sấp tài liệu nhiều quá mình không thể nhập tay hết được, nên mình có tìm hiểu VBA nó giúp mình làm lẹ hơn, nhưng mình mới tìm hiểu nên không rành
mong bro giúp mình viết code định vị để mình nhập dữ liệu cho nhanh với
Ví dụ Trường Dãy H, mình nhập 5 ; TT mình nhập 6, Ký tự nhập 100 thì tự động nó nhập 100 vào phần khoanh đỏ.
Mong được sự giúp đở của các bác.
Em xin cám ơn

View attachment 305791
Tìm hiểu phương thức offset của range
range.offset
thì sẽ hiểu và cách để áp dụng định vị theo 1 ô gốc nào đó
 
Upvote 0
nhập tay như này VBA làm gì cho lâu, cứ nhập thẳng vào ô excel là nhanh nhất
 
Upvote 0
Dùng 1 biến định vị dòng. Dùng sự kiện afterUpdate của từng textbox trên form
Thí dụ:
Public dong as long
dong = ActiveCell.Row
Sự kiện textbox1_AfterUpdate
dong = dong + 1
ActiveSheet.Cells(dong, 3) = textbox1

Sự kiện textbox2 và textbox3 không tăng dong

Trước khi mở form, đứng ở dòng cuối có dữ liệu, cột nào cũng được
 
Upvote 0
Dùng 1 biến định vị dòng. Dùng sự kiện afterUpdate của từng textbox trên form
Thí dụ:
Public dong as long
dong = ActiveCell.Row
Sự kiện textbox1_AfterUpdate
dong = dong + 1
ActiveSheet.Cells(dong, 3) = textbox1

Sự kiện textbox2 và textbox3 không tăng dong

Trước khi mở form, đứng ở dòng cuối có dữ liệu, cột nào cũng được
Bài này không cần dong = dong +1 anh.
Cứ để trống cả 2 textbox để chủ thớt tự nhập, sự kiện on enter thì lưu và xoá trắng textbox là được rồi. Thêm phím nóng cho hành động xoá sau khi nhập định vị ô cần xoá.
 
Upvote 0
Chào các bác
Hiện tại mình cần nhập dữ liệu theo yêu cầu của Sếp
Sếp đưa cho1 sấp tài liệu nhiều quá mình không thể nhập tay hết được, nên mình có tìm hiểu VBA nó giúp mình làm lẹ hơn, nhưng mình mới tìm hiểu nên không rành
mong bro giúp mình viết code định vị để mình nhập dữ liệu cho nhanh với
Ví dụ Trường Dãy H, mình nhập 5 ; TT mình nhập 6, Ký tự nhập 100 thì tự động nó nhập 100 vào phần khoanh đỏ.
Mong được sự giúp đở của các bác.
Em xin cám ơn

View attachment 305791
Gửi nhầm file rồi bạn.
 
Upvote 0
Bài này không cần dong = dong +1 anh.
Cứ để trống cả 2 textbox để chủ thớt tự nhập, sự kiện on enter thì lưu và xoá trắng textbox là được rồi. Thêm phím nóng cho hành động xoá sau khi nhập định vị ô cần xoá.
Tất nhiên là lưu và xóa trắng, quay lại nhập tiếp (setFocus chẳng hạn). Nhưng lưu xuống đâu? Nhập 100 dòng dữ liệu từ giấy mà tham số dong không + 1 thì lưu mãi vào 1 chỗ sao?
Còn nút xóa tôi chưa nói tới: Phải chọn dòng trước rồi mới xóa bằng Refedit hoặc Inputbox.
 
Upvote 0
Tất nhiên là lưu và xóa trắng, quay lại nhập tiếp (setFocus chẳng hạn). Nhưng lưu xuống đâu? Nhập 100 dòng dữ liệu từ giấy mà tham số dong không + 1 thì lưu mãi vào 1 chỗ sao?
Còn nút xóa tôi chưa nói tới: Phải chọn dòng trước rồi mới xóa bằng Refedit hoặc Inputbox.
Chủ thớt nói gõ tham số dòng cột vào 2 textbox rồi đó anh.
 
Upvote 0
Chủ thớt nói gõ tham số dòng cột vào 2 textbox rồi đó anh.
Tôi xin lỗi chưa xem file và xem hình chưa kỹ nên tưởng nhập liệu 3 thông tin trên 3 cột.

Tuy nhiên cách tiếp cận dòng cột kiểu tự chọn STT, chọn dãy H mấy thì sẽ tốn công hơn. Sẽ phải find STT lấy dòng, find lớp lấy cột. Một lần nhập liệu 1 con số là phải tìm. Tại sao không nhập hết 1 dòng rồi qua dòng mới, hoặc nhập hết 1 cột rồi qua cột mới?

Tôi đưa ra giải pháp cho việc nhập liệu theo từng cột:
- Có 1 textbox hoặc combobox chọn dãy lớp. Dùng hàm Find để xác định Column. Lúc này sẽ nhập liệu từng cột. Đổi giá trị combobox sẽ nhập liệu cột mới.
- Khi vừa chọn dãy lớp, tìm dòng cuối có dữ liệu của cột đó, gán cho biến dong như bài trên. Có lẽ vẫn cần biến public.
- Do chỉ nhập liệu 1 ô (chứ không phải 3 ô như tôi nhầm), thì chỉ 1 textbox nhập liệu:
sự kiện exit hoặc Before Update, tăng dong lên 1, ghi xuống dong mới tăng và cột ở gạch đầu dòng thứ nhất. Xóa trắng và nhập giá trị mới.

Ghi chú là sử dụng đúng sự kiện để:
- Giữ con trỏ lại trong textbox
- với keyCode hoặc KeyASCII nào đó sẽ nhảy lên (focus vào) combobox để sửa cột, hoặc đóng form, ...
 
Upvote 0
. . . .
(1) Hiện tại mình cần nhập dữ liệu theo yêu cầu của Sếp
Sếp đưa cho1 sấp tài liệu nhiều quá mình không thể nhập tay hết được, nên mình có tìm hiểu VBA nó giúp mình làm lẹ hơn, nhưng mình mới tìm hiểu nên không rành
mong bro giúp mình viết code định vị để mình nhập dữ liệu cho nhanh với
Ví dụ Trường Dãy H, mình nhập 5 ; TT mình nhập 6, Ký tự nhập 100 thì tự động nó nhập 100 vào phần khoanh đỏ.
Mong được sự giúp đở của các bác.
. . . .
Bạn viết thừa cụm từ 'của Sếp'; Ở cồng đồng này người ta không cần đếm xỉa đến Sếp của bạn;
Cái cần là bạn nhập vào tên trang tính nào trong 14 trang tính thì lại không đề cập đến; & như vậy vô hành chung bạn làm khó thêm cho những người có nhã ý giúp bạn rồi còn gì!
Nếu là mình thì cần viết là dùng form nào (trong 16 cái form của bạn (chứng tỏ bạn chưa tôn trọng người mà bạn cầu để được giúp đỡ; ngược lại mình cho rằng bạn đem Sếp (của bạn) có í để hù dọa cộng đồng này;

& như mình thì thanh lọc bớt file (bỏ bớt những trang không hay chưa liên quan đến nhập liệu) cũng nhưng bớt các form không liên quan để tránh làm loãng câu hỏi;
Những mong lần sau bạn chú ý hơn!

CHÚC MỌI NGƯỜI VUI KHỎE TRONG NHỮNG NGÀY CUỐI TUẦN!
 
Upvote 0
ngược lại mình cho rằng bạn đem Sếp (của bạn) có í để hù dọa cộng đồng này;
Tôi thì cho rằng người ta chỉ đang kể khổ chứ không phải "hù dọa". Anh nhạy cảm quá mức. Hãy nghĩ đơn giản cho người ta trước khi suy diễn và gán tánh xấu cho họ.
 
Upvote 0
Tôi thì cho rằng người ta chỉ đang kể khổ chứ không phải "hù dọa". Anh nhạy cảm quá mức. Hãy nghĩ đơn giản cho người ta trước khi suy diễn và gán tánh xấu cho họ.
Than vãn, kể lể không phải là tánh xấu à?
Cỡ nữa ram giấy (250 tờ) này tôi nhai gọn. Thay vì Vê-Bê-A này nọ thì tự ngồi gõ có lẽ xong từ ngày thứ bảy.

Đừng nói với tôi là cuối tuần người ta chở vợ đi ăn cao lâu, thảy cái đề bài cho bọn rỗi rảnh gõ dữ liệu và code VBA giùm.
 
Upvote 0
Tôi xin lỗi chưa xem file và xem hình chưa kỹ nên tưởng nhập liệu 3 thông tin trên 3 cột.

Tuy nhiên cách tiếp cận dòng cột kiểu tự chọn STT, chọn dãy H mấy thì sẽ tốn công hơn. Sẽ phải find STT lấy dòng, find lớp lấy cột. Một lần nhập liệu 1 con số là phải tìm. Tại sao không nhập hết 1 dòng rồi qua dòng mới, hoặc nhập hết 1 cột rồi qua cột mới?

Tôi đưa ra giải pháp cho việc nhập liệu theo từng cột:
- Có 1 textbox hoặc combobox chọn dãy lớp. Dùng hàm Find để xác định Column. Lúc này sẽ nhập liệu từng cột. Đổi giá trị combobox sẽ nhập liệu cột mới.
- Khi vừa chọn dãy lớp, tìm dòng cuối có dữ liệu của cột đó, gán cho biến dong như bài trên. Có lẽ vẫn cần biến public.
- Do chỉ nhập liệu 1 ô (chứ không phải 3 ô như tôi nhầm), thì chỉ 1 textbox nhập liệu:
sự kiện exit hoặc Before Update, tăng dong lên 1, ghi xuống dong mới tăng và cột ở gạch đầu dòng thứ nhất. Xóa trắng và nhập giá trị mới.

Ghi chú là sử dụng đúng sự kiện để:
- Giữ con trỏ lại trong textbox
- với keyCode hoặc KeyASCII nào đó sẽ nhảy lên (focus vào) combobox để sửa cột, hoặc đóng form, ...
Cho em hỏi cũng tương tự là cột và hàng đều sử dụng combobox thì dùng hàm gì để xác định vị trí ô cần nhập dữ liệu vậy anh?
Em đang tìm kiếm cách làm tương tự như chủ thớt nhưng thay vì dùng textbox1 và textbox2 để xác định vị trí ô cho textbox3 nhập liệu thì em sẽ dùng combobox1 và combobox2 để cung cấp dữ liệu xác định vị trí ô textbox3 ạ.
Nếu em có gì diễn đạt chưa rõ ràng thì mọi người nhắc nhở để em trình bày thêm nhé. Em cảm ơn ạ.
 

File đính kèm

Upvote 0
Nếu tên bộ phận đúng như trong file, (nghĩa là 'Bộ phận XXX' thì ta xài TextBox có lẽ tiện hơn; Khi đó nhập '1' sẽ tương đương cột C (cột thứ 3),. . . .
Còn tên mặt hàng thì chắc không như trong trang tính của bạn; lúc đó xài ComboBox là tiện rồi; Chịu khó tua chuột để tìm đúng tên là được thôi;
Sau khi nhập mặt hàng thì ta tìm dòng chưa tên (mặt hàng) nhờ phương thức FIND() trong VBA, hay duyệt trong vòng lặp từ đầu đến cuối thôi;
 
Upvote 0
Cho em hỏi cũng tương tự là cột và hàng đều sử dụng combobox thì dùng hàm gì để xác định vị trí ô cần nhập dữ liệu vậy anh?
Em đang tìm kiếm cách làm tương tự như chủ thớt nhưng thay vì dùng textbox1 và textbox2 để xác định vị trí ô cho textbox3 nhập liệu thì em sẽ dùng combobox1 và combobox2 để cung cấp dữ liệu xác định vị trí ô textbox3 ạ.
Nếu em có gì diễn đạt chưa rõ ràng thì mọi người nhắc nhở để em trình bày thêm nhé. Em cảm ơn ạ.
Tham khảo . (làm theo gợi ý của anh @SA_DQ )
Trong form bạn nên thêm 1 nút commadButton để nhấn vào nút này dữ liệu ở Textbox 1 sẽ được gán vào sheet1
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom